তোমার বন্ধুরা কোথায় বসে থাকবে?


25

আপনি এবং কিছু বন্ধু বোলিং করছেন। মোট এন এন বোলার আছেন। তবে, এখানে বসার জন্য কেবল এন -1 চেয়ার রয়েছে The সমাধানটি সহজ: বর্তমানে যার পালা হবে তিনি চেয়ার পান না। তারপরে যখন তাদের পালা শেষ হবে, তখন তারা পাশের ব্যক্তির চেয়ারে বসে।

একটি উদাহরণ নিতে দিন। বলে নামকরণ করা হয় একটি , এবং আপনার চার বন্ধু নামকরণ করা হয় বি , সি , ডি , আর । প্রতিটি খেলোয়াড় বর্ণানুক্রমিক ক্রমে চলে আসে, তাই আপনাকে প্রথমে যেতে হবে। যেহেতু ৫ জন খেলোয়াড় রয়েছেন, সেখানে রয়েছে মাত্র ৪ টি আসন। আপনার বন্ধুরা এই ক্রমে চারটি আসনে বসেছে:

CEBD

আপনি যান, এবং হ্যাঁ আপনি একটি ধর্মঘট পেতে! এবার বি'র পালা, সুতরাং আপনি তাঁর চেয়ারে বসুন। এখন এটির মতো দেখাচ্ছে:

CEAD

বি যায়। Gutterball! তারপরে সে সি এর স্পট এ বসে এবং সি তার পরের বারে।

গুটিকা

তবে সি বসে ডি 'র চেয়ার।

বিইএসি

এবং ডি এর চেয়ারে বসে আছেন

BDAC

এবং সবশেষে, আপনার চেয়ারে বসে।

BDEC

আপনি লক্ষ্য করবেন যে এখন প্রত্যেকের আসন (সিউডো) বদল হয়েছে। আপনার অবশ্যই খুঁজে বের করতে হবে, এক্স টার্নের পরে কে বসে থাকবে?

ইনপুট

আপনার প্রোগ্রামটি অবশ্যই ব্যবহারকারীর কাছ থেকে দুটি ইনপুট নিতে হবে, একটি স্ট্রিং এবং একটি সংখ্যা। কোনও অনুরোধের প্রয়োজন নেই। স্ট্রিংটি কোনও পুনরাবৃত্তি না করে 1-51 বর্ণমালা অক্ষর (বিজেড এবং এজেড) হবে। এটি আপনার বন্ধুরা বসে থাকার ক্রমটি উপস্থাপন করে। কোনও বড় হাতের থাকবে না কারণ এটি আপনি এবং আপনি সর্বদা প্রথম হন। সংখ্যাটি আপনি এবং আপনার বন্ধুরা খেলে মোট রাউন্ডের (গেমস নয়) সংখ্যা হবে। এই সংখ্যাটি ইতিবাচক এবং যুক্তিসঙ্গত আকারের হবে (1000 এরও কম)।

আউটপুট

আপনার প্রোগ্রামটি অবশ্যই এক্স টার্ন হওয়ার পরে আপনার বন্ধুরা যে ক্রমটি বসাচ্ছেন তাতে এবং এটির পালাটি অবশ্যই মুদ্রণ করে। সুতরাং উদাহরণস্বরূপ, যদি এক্স টার্ন করার পরে অর্ডারটি বিডিজিএইচএফ হয় এবং এটি জেডের পালা, আপনার প্রোগ্রামটি অবশ্যই এটি প্রিন্ট করতে হবে:

BEDGCAHF
It is Z's turn.

এখানে কয়েকটি নমুনা ইনপুট এবং আউটপুট রয়েছে।

input: E, 4 
E
It is A's turn.

input: E, 5 
A
It is E's turn.

input: Bb, 2
AB
It is b's turn.

input: dgOPZXKDQYioHflFhpqzUsSaeILwckVNEtGTCJBvnruRyWMmjxb, 999
JNuvFDqjwEPVnMSlOWXgAZyGKordIRBtkamziphcUYbxfCsTQeH
It is L's turn.

বিধি

  • ছোট ছোট অক্ষরের চেয়ে অগ্রাধিকার গ্রহণের সাথে প্রত্যেকে বর্ণানুক্রমিক ক্রমে চলে যায়।

  • এটি কোড-গল্ফ, সুতরাং স্ট্যান্ডার্ড লুফোলগুলি প্রয়োগ হয় এবং সাবমিশনগুলি বাইটে স্কোর হয়


1
আমি ব্রেইনফ্ল্যাকের জন্য এটিতে বেশ কয়েক ঘন্টা কাজ করেছি। আমি কেবল লক্ষ্য করেছি যে আমি এটি ভুল করছি।
ক্রিস্টোফার

1
{({}[()])({}<({}<(([])<{{}({}<>)<>([])}{}<>>)<>>)<>{({}[()]<({}<>)<>>)}{}<>>)}
ক্রিস্টোফার

এটি এটিকে বদলে দেয় এবং স্ট্যাকের প্রথম আইটেমটির উত্তর।
ক্রিস্টোফার

আপনার জন্য এটি আমার আশ্চর্য ছিল: পি
ক্রিস্টোফার

উত্তর:


3

পাইথ, 37 বাইট

uXGK<.<+\ASzH2)QzpeK"It is ""'s turn.

অনলাইন বিক্ষোভ: পাইথ সংকলক / নির্বাহক

@ Isaacg এর সমাধানের উপর ভিত্তি করে অ্যালগরিদম কৃপা। তাঁর মতো আমি প্রাথমিক সিট-অর্ডার দিয়ে শুরু করি Xএবং বর্তমান খেলোয়াড়ের সাথে পরবর্তী খেলোয়াড়কে প্রতিস্থাপনের জন্য বারবার প্রতিস্থাপন-কার্যকারিতাটি ব্যবহার করি ।

তবে তার বাস্তবায়নের বিপরীতে যা বর্তমান খেলোয়াড়ের সাথে বসার ক্রমে পরবর্তী খেলোয়াড়ের চরটি প্রতিস্থাপন করে, আমি এটিকে আরও বিস্তৃত উপায়ে ব্যবহার করি। আমি বর্তমান প্লেয়ারের প্রতিটি চরকে পরের প্লেয়ার এবং পরবর্তী প্লেয়ারের প্রতিটি চরকে বর্তমান প্লেয়ার দ্বারা প্রতিস্থাপন করব। এটি উভয় খেলোয়াড়কে দ্বিতীয় আরগ হিসাবে পাস করে তৃতীয় আরগটি বাদ দিয়ে ( XG"ab")পরিবর্তে XG"a""b") সম্পন্ন করা হয়। যেহেতু বর্তমান প্লেয়ার স্ট্রিংয়ের অংশ নয় (তিনি খেলছেন), প্রথম প্রতিস্থাপনের কোনও প্রভাব নেই। তবে এটি আমাকে একই সাথে উভয় খেলোয়াড় তৈরি করতে দেয়, যখন @ আইসাককে স্বতন্ত্রভাবে এগুলি উত্পন্ন করতে হবে।

আমি ব্যবহার করি এমন আরও একটি ক্রেজি নতুন বৈশিষ্ট্য হ'ল অ্যাসাইনমেন্ট অপারেটর। কিছুক্ষণ আগে পর্যন্ত =N1অনুবাদ হয়েছিল N = 1, যা পাইথনের সাথে মৃত্যুদন্ড কার্যকর করা হয়েছিল। তবে আজকাল এটি সংকলিত হয় assign('N',1)। এই ফাংশনটি N1 প্রদান করে এবং মানটি দেয় (তবে এটি মুদ্রণ করে না) doesn't এটি মধ্যবর্তী ফলাফলগুলি সংরক্ষণের অনুমতি দেয়, যা হ্রাস অপারেশনে উদাহরণস্বরূপ ঘটে। এটি ব্যবহার করে আমি খেলোয়াড়দের জুড়ি সঞ্চয় করতে সক্ষম হয়েছি, যা শেষ অবস্থান পরিবর্তন করেছে এবং দ্বিতীয় প্লেয়ার মুদ্রণ করেছে।

বিস্তারিত ব্যাখ্যা

                      implicit: z = input string, Q = input number
u              Qz     reduce for H in range(Q), start with G = z
                        update G with:
       +\ASz              "A" + sorted(z)
     .<     H             cyclic shifted by H
    <        2            get the first 2 elements (current + next player)
   K                      store the result in K
 XG           )           replace next player by current player in G
                      implicit print 

peK"It is ""'s turn.  print "It is" + K[-1] (current player) + "'s turn."

8

পাইথ, 39 38 বাইট

L@+\ASzbuXGyhHyHQzpyQ"It is ""'s turn.

এটি অনুসন্ধান এবং প্রতিস্থাপন অপারেশন এর পুনরাবৃত্ত অ্যাপ্লিকেশন চারপাশে ভিত্তি করে X। প্রথম বিট একটি অনুসন্ধান ফাংশন সংজ্ঞায়িত করে y, যা bপ্লেয়ার ক্রমে প্লেয়ারকে খুঁজে পায় । তারপরে, আমরা চূড়ান্ত আসন বসার ক্রম সন্ধানের জন্য বারবার বিকল্পগুলি সম্পাদন করি এবং শেষ পর্যন্ত কার পালা তা মুদ্রণ করে।

মজাদারভাবে, চূড়ান্ত আসনের জন্য সন্ধানের কোডটি যার মুদ্রার (21 বাইট) প্রিন্ট করবে তার চেয়ে কম (18 বাইট) tes

কোডটি STDIN এর প্রথম লাইনে বসার স্ট্রিং নেয় এবং দ্বিতীয়টিতে পালা সংখ্যা।

প্রদর্শন.

ব্যাখ্যা:

L@+\ASzbuXGyhHyHQzpyQ"It is ""'s turn.
                                          Implicit:
                                          z = input()
                                          Q = eval(input())

L                                         def y(b): return
  +\ASz                                    "A" + sorted(z)
 @     b                                  (               )[b]
        u       Qz                        reduce for H in range(len(Q)),
                                          G starts as z.
         XGyhHyH                          replace in G y(H+1) with y(H).
                  pyQ"It is ""'s turn.    Print out whose turn it is.

@ স্প3000 ক্যাচ দেওয়ার জন্য ধন্যবাদ
isaacg

%আপনি যদি কেবল একটি জিনিস সন্নিবেশ করেন তবে কখনই ব্যবহার করবেন না । এমনকি ++একটি বাইট সংরক্ষণ করতে পারে তবে সর্বোত্তম উপায় (2 বাইট) ব্যবহার করছে p:pyQ"It is ""'s turn
জাকুব

উফ। শেষে পয়েন্ট মিস করেছেন। সুতরাং ++হিসাবে একই বাইট গোনা হয়েছে %, এবং pশুধুমাত্র 1 বাইট পরিমাণ সঞ্চয় হয়।
জাকুব

7

সিজেম, 49 45 43 বাইট

l_'A+$ri{:L2<(erL(+}*1<"
It is "\"'s turn."

আমি মনে করি এটি কাজ করে। এটি ঠিক যেমনটি অ্যালগরিদম চালায়।

এটি অনলাইনে চেষ্টা করুন।

ব্যাখ্যা

l                       Read line (initial seating order)
_'A+$                   Copy, add "A" and sort to give bowling order

ri{          }*         Do <number of turns> times...
   :L                     Save bowling order as L
     2<(                  Get next and current bowlers
        er                Replace next with current in seating
          L(+             Push bowling order again and update (rotate)

1<                      Get current bowler from start of bowling order
"                  
It is "\"'s turn."      Output message

4

পাইথন 3, 110

s=input()
S=sorted(s+'A')*999
exec("y,*S=S;s=s.replace(S[0],y);"*int(input()))
print(s+"\nIt is %s's turn."%y)

ব্যবহার করে এসপি 3000 এর সমাধানেরreplace একটি অনুকূলিত সংস্করণ । Sক্রম অনুযায়ী উপস্থিত অক্ষর যদিও তালিকা চক্র। আমরা Sপূর্বের বর্ণের প্রতিটি চরিত্রের প্রদত্ত স্ট্রিংয়ে বারবার প্রতিস্থাপন করি perform


ভাল খেলেছে, প্রতিবার :)
Sp3000

@ এসপি 3000 যদিও আমি আপনার সমাধানটি ব্যবহার করেছি।
xnor

3

ক্লিপ 10 , 59 56 বাইট

[t{)k[qa)qglqtg(lqt}wx)nyN"It is "gnyt"'s turn.."`]s,x'A

উদাহরণ

[t{)k[qa)qglqtg(lqt}wx)nyN"It is "gnyt"'s turn.."`]s,x'A
dgOPZXKDQYioHflFhpqzUsSaeILwckVNEtGTCJBvnruRyWMmjxb
999
JNuvFDqjwEPVnMSlOWXgAZyGKordIRBtkamziphcUYbxfCsTQeH
It is L's turn.

ব্যাখ্যা

প্রথম ইনপুটটি প্লেয়ারগুলির তালিকা, ভেরিয়েবলের জন্য বরাদ্দ করা হয় x

দ্বিতীয় ইনপুটটি টার্নের সংখ্যা, যা প্রোগ্রামটি প্রাপ্ত করে ny

[t                                        ]s,x'A .-t is the sorted list of players including A-.
  {                                      `       .-Print the following:            -.
    k[q            }wx)ny                        .-In each round (q is all the previous rounds)-.
       a)q                                       .-Replace                         -.
          glqt                                   .-the next player                 -.
              g(lqt                              .-with the previous player        -.

                     N                           .-Also print a newline            -.
                      "It is "    "'s turn.."
                              gnyt               .-The ny'th player in t           -.

"প্রতিস্থাপন" ব্যবহার করার ধারণার জন্য Sp3000 ধন্যবাদ।


3

পাইথন 3, 128 বাইট

L=input()
S=sorted(L)+["A"]
i=0
exec("L=L.replace(S[i],S[i-1]);i=-~i%len(S);"*int(input()))
print(L+"\nIt is %s's turn."%S[i-1])

এসটিডিআইএন এর মাধ্যমে দুটি লাইনের ইনপুট নেয় - প্রাথমিক আসন ক্রম এবং তারপরে সংখ্যা।

এটি মূলত আমার সিজেএম সমাধান হিসাবে একই অনুসন্ধান এবং প্রতিস্থাপন ধারণা । শুধুমাত্র চতুর অংশ যে আমরা বিদ্ধ হয় Aফিরে বোলিং আদেশের এবং আমাদের সূচক করা iসূচী পরবর্তী বোলার, এইভাবে দ্বারা -1 ইন্ডেক্স সুবিধার সুযোগ গ্রহণ এবং এড়ানো IndexErrorগুলি।

এটি পাইথন 2-এ কয়েকটি বাইট সংক্ষিপ্ত, তবে আমি ওপির সমাধানের সাথে তুলনা করার জন্য পাইথন 3 পোস্ট করছি।


পাইথন 2 এর কী কী উন্নতি হয়েছে? আমি দেখতে পাচ্ছি 1 লাইনের ইনপুটটি কাঁচা-ইনপুট (+4) int(input())হয়ে যায় এবং লাইন 4 এ ইনপুট (-4) হয়ে যায় যাতে এটি বাতিল হয়ে যায়। তারপরে মুদ্রণ থেকে প্রথম বন্ধনী সরান এবং মোট 127 এর জন্য একটি স্থান যুক্ত করুন I আমি কিছু অনুপস্থিত?
ডিজেএমসিএমহেম

@ ডিজেএমসিএমহেম আপনি প্যারেনেসিসগুলি ভুলে গেছেনexec
স্প 3000

2

জাভাস্ক্রিপ্ট (ES6) 116

পপআপ উইন্ডো দিয়ে আই / ও-তে প্রোগ্রাম হিসাবে 116 বাইট। 114 একটি পরীক্ষামূলক ফাংশন হিসাবে।

ফায়ারফক্সে কোড স্নিপেট পরীক্ষা করতে

// as a program with I/O
for(t=[...s=(P=prompt)()].sort(),x=P(),p='A';x--;p=n)t.push(p),s=s.replace(n=t.shift(),p);P(`${s}
It is ${p}' turn`)

// as a function with 2 parameters, returning output as a 2 lines string
f=(s,x)=>{for(t=[...s].sort(),p='A';x--;p=n)t.push(p),s=s.replace(n=t.shift(),p);return(`${s}
It is ${p}' turn`)}

// Test suite
test=[
['CEBD',5], ['E', 4],['E',5],['Bb', 2],
['dgOPZXKDQYioHflFhpqzUsSaeILwckVNEtGTCJBvnruRyWMmjxb', 999]];

Out=x=>OUT.innerHTML=OUT.innerHTML+x;

test.forEach(([p,x])=>Out(p+' '+x+':\n'+f(p,x)+'\n'))
Test cases from OP:
<pre id=OUT></pre>


2

পাওয়ারশেল, 168 বাইট

function x($s,$t){$p="A"+$s-split''|?{$_}|%{[int][char]$_}|sort|%{[char]$_};$l=$p.count;1..$t|%{$s=$s.replace($p[$_%$l],$p[($_-1)%$l])};$s;"It is $($p[$t%$l])'s turn."}

আমি সিদ্ধান্ত নিয়েছি এই সাইটে আমার সমস্ত উত্তর পাওয়ারশেলের মধ্যে থাকবে। একদিন আমার কাছে একটি উত্তর থাকবে যা প্রতিযোগিতা করতে পারে ...

ফাংশনটি এভাবে কল করুন: x Bb 2


1

এই উত্তরটি জিততে পারে না, তবে আমি এটি যাইহোক সেখানে ফেলে দেব।

পাইথন 3, 167 বাইট

s=input()
n=int(input())
c='A'
t=sorted(set(s+c))
F=len(t)
f=list(s)
for i in range(n):
 I=f.index(t[(i+1)%F]);c,f[I]=f[I],c
print(''.join(f)+'\nIt is '+c+"'s turn.")

1

পিপ , 54 বাইট

খুব প্রতিযোগিতামূলক নয়, তবে কমপক্ষে আমি পিপের পরিবর্তনশীল স্ট্রিং এবং অদলবদল কমান্ডটি প্রদর্শন করব। কমান্ড-লাইন আর্গুমেন্ট হিসাবে সিটিংয়ের ক্রম এবং রাউন্ডের সংখ্যা নেয় (যা যথাক্রমে নির্ধারিত হয় aএবং b)।

u:'Ao:SN A^u.aLbSu(aa@?C(o++i))Pa"It is ".u."'s turn."

ব্যাখ্যা:

u:'A                   u = player who's currently up

o:SN A^u.a
      ^u.a             Append "A" to the seating order, split into list of characters
o:SN A                 ASCII value of each char, sort the resulting list, assign to o

LbSu(aa@?C(o++i))
Lb                     Repeat b times:
  Su                   Swap u with:
    (a          )      The character of a at index:
      a@?              Find in a:
         C(o++i)       chr(ASCII value of next player from o)
                       (Subscripts wrap around, as in CJam, so no need for mod)

Pa                     Print the final lineup
"It is ".u."'s turn."  Current player (auto-printed)

এটি 49 টি হত যদি আমি SSএকই সাথে (স্ট্রিংয়ের মতো বাছাই করা) একইভাবে প্রয়োগ করতে ( বিরক্তিকর SNসংখ্যাসূচক) বিরক্ত করতাম ... আহা, বিকাশের ভাষা থাকার বিপদগুলি।



আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.