আমরা যেখানেই শুরু করেছি সেখানে শেষ!…


29

চ্যালেঞ্জ:

ইনপুট:

আপনি দুটি ইনপুট নিন:
- কেবল মুদ্রণযোগ্য ASCII (একটি ফাঁকা স্থান, ট্যাব বা নতুন লাইন বাদে) যুক্ত একটি স্ট্রিং
- একটি মুদ্রণযোগ্য ASCII অক্ষর

আউটপুট:

প্রথম লাইনে স্ট্রিং-ইনপুট থাকবে। iএই চরিত্রটির প্রতিটি -মডুলো -3 প্রথম ঘটনাটি দক্ষিণ-পূর্ব দিকের দিকে চলে যাবে; প্রতি i-মডুলো -3 সেকেন্ডের ঘটনাটি দক্ষিণে চলে যাবে; এবং প্রতি i-মডুলো -3 তৃতীয় ঘটনাটি দক্ষিণ-পশ্চিম দিকে চলে যাবে। অক্ষরগুলি তাদের প্রথম প্রারম্ভিক অবস্থানে না আসা পর্যন্ত আপনি চালিয়ে যাবেন (যার অর্থ এটি যদি প্রয়োজন হয় তবে এটি একপাশ থেকে অন্যদিকে জড়িয়ে যাবে) এবং তারপরে আপনি স্ট্রিং-ইনপুট দিয়ে শেষ লাইনটি আবার মুদ্রণ করবেন to শেষ কর. (দ্রষ্টব্য যে সমস্ত পরীক্ষার কেসগুলি তাদের প্রাথমিক ইনপুটটিতে সর্বাধিক length(input)সারিগুলির পরে শেষের ইনপুটযুক্ত সারি সহ শেষ হবে 14 এটি নীচের প্রথম পরীক্ষার ক্ষেত্রে যেমন 14 এর দৈর্ঘ্যের সাথে দেখা যাবে তবে তাড়াতাড়িই হতে পারে, তবে শেষ হওয়ার পরে 9.)

এটি সমস্ত বেশ অস্পষ্ট হতে পারে, সুতরাং এখানে একটি উদাহরণ:

পরীক্ষার কেস 1:

স্ট্রিং-ইনপুট: "This_is_a_test"
অক্ষর-ইনপুট:'s'

আউটপুট:

This_is_a_test
    s s    s  
     ss   s   
      s  s    
      sss     
      sss     
      s  s    
     ss   s   
    s s    s  
This_is_a_test

এখানে তিনটির রঙিন পথগুলির সাথে একই পরীক্ষার কেস s:

এখানে চিত্র বর্ণনা লিখুন

যেখানে প্রথম 's'দক্ষিণ-পূর্ব দিকের সবুজ পথ অনুসরণ করে; দ্বিতীয়টি 's'দক্ষিণ দিকের হলুদ পথ অনুসরণ করে; এবং তৃতীয়টি 's'দক্ষিণ-পশ্চিম দিকের হালকা নীল পথ অনুসরণ করে। (যদি চতুর্থটি 's'থাকে তবে এটি আবার দক্ষিণ-পূর্ব দিকের দিকে চলে যাবে, যা নীচের অন্যান্য পরীক্ষার কয়েকটি ক্ষেত্রে দেখা যেতে পারে))

চ্যালেঞ্জ বিধি:

  • ইনপুটগুলিতে কেবল প্রিন্টযোগ্য এএসসিআইআই থাকবে (স্পেস, ট্যাব এবং নতুন লাইনগুলি বাদে)
  • I / O ফর্ম্যাটগুলি নমনীয়। একটি নতুন লাইনের সীমানাঙ্কিত স্ট্রিং, অক্ষর ম্যাট্রিক্স ইত্যাদি হতে পারে call
  • প্রদত্ত অক্ষরটি স্ট্রিংয়ের মধ্যে উপস্থিত নাও হতে পারে, এক্ষেত্রে আপনাকে একবার অথবা দু'বার ইনপুট-স্ট্রিংয়ের আউটপুট দেওয়ার অনুমতি দেওয়া হয় ( "test", 'a'যেমন সম্ভাব্য আউটপুট হিসাবে এর দুটি হতে পারে: "test\ntest"/ "test")।
  • শীর্ষস্থানীয় স্থানগুলি বাধ্যতামূলক; পিছনের স্থানগুলি alচ্ছিক। এক বা একাধিক শীর্ষস্থানীয় / নতুন লাইনগুলিকে অনুমোদিত।

সাধারাইওন রুল:

  • এটি , তাই বাইট জেতে সংক্ষিপ্ত উত্তর।
    কোড-গল্ফ ভাষাগুলি আপনাকে নন-কোডগলফিং ভাষার সাথে উত্তর পোস্ট করতে নিরুৎসাহিত করবেন না। 'যে কোনও' প্রোগ্রামিং ভাষার পক্ষে যতটা সম্ভব সংক্ষিপ্ত উত্তর নিয়ে আসার চেষ্টা করুন।
  • স্ট্যান্ডার্ড নিয়মগুলি আপনার উত্তরের জন্য প্রযোজ্য , সুতরাং আপনাকে সঠিক পরামিতি এবং রিটার্ন-টাইপ, সম্পূর্ণ প্রোগ্রাম সহ STDIN / STDOUT, ফাংশন / পদ্ধতি ব্যবহারের অনুমতি দেওয়া হবে। আপনার কল
  • ডিফল্ট লুফোলগুলি নিষিদ্ধ।
  • যদি সম্ভব হয় তবে আপনার কোডের জন্য একটি পরীক্ষার সাথে একটি লিঙ্ক যুক্ত করুন।
  • এছাড়াও, প্রয়োজন হলে একটি ব্যাখ্যা যোগ করুন।

পরীক্ষার কেস / আরও উদাহরণ:

পরীক্ষার কেস 2:

স্ট্রিং-ইনপুট: "abcabcabcabcabc"
অক্ষর-ইনপুট:'b'

আউটপুট:

abcabcabcabcabc
  b b b    b b 
   bbb      bb 
    b        b 
   bbb       bb
b b b b      b 
 b  b  b     b 
b b b   b    b
   bb    b   bb
    b     b  b 
    bb     bbb
    b b    bbb 
    b  b  b  b 
    b   bb   bb
b   b   bb   b 
abcabcabcabcabc

পাঁচটির রঙিন পথগুলির সাথে এখানে একই পরীক্ষার ঘটনা রয়েছে a:

এখানে চিত্র বর্ণনা লিখুন

পরীক্ষার কেস 3:

স্ট্রিং-ইনপুট: "only_two_paths?"
অক্ষর-ইনপুট:'o'

আউটপুট:

only_two_paths?
 o     o       
  o    o       
   o   o       
    o  o       
     o o       
      oo       
       o       
       oo      
       o o     
       o  o    
       o   o   
       o    o  
       o     o 
       o      o
only_two_paths?

এখানে দুটির রঙিন পথগুলির সাথে একই পরীক্ষার কেস o:

এখানে চিত্র বর্ণনা লিখুন

পরীক্ষার কেস 4:

স্ট্রিং-ইনপুট: "lollollollollol"
অক্ষর ইনপুট:'l'

আউটপুট:

lollollollollol
lll   ll  ll   
 ll   ll  ll   
l ll ll ll ll  
  lll l ll l ll
  llllll  ll ll
l l  ll    ll  
 ll  lll   ll  
l l l lll ll l 
  ll  l ll l  l
l l l l llll l 
 ll  lll  lll  
l l   l    ll  
  ll lll  lllll
  l l l ll l ll
lollollollollol

এখানে দশটির রঙিন পথগুলির সাথে একই পরীক্ষার কেস l:

এখানে চিত্র বর্ণনা লিখুন

পরীক্ষার কেস 5:

স্ট্রিং-ইনপুট: "AbCdEeDcBaAbCdEeDcBa_CCCCC"
অক্ষর ইনপুট:'C'

আউটপুট:

AbCdEeDcBaAbCdEeDcBa_CCCCC
C  C        C       C  C  
 C  C       C      C  CCC 
  C  C      C     C  C C C
C  C  C     C    C  C  C  
 C  C  C    C   C  C   C  
  C  C  C   C  C  C    C  
   C  C  C  C C  C     C  
    C  C  C CC  C      C  
     C  C  CC  C       C  
      C  C CC C        C  
       C  C CC         C  
        CC CC C        C  
        CC CC  C       C  
       C  C CC  C      C  
      C  C CC C  C     C  
     C  C   C  C  C    C  
    C  C    CC  C  C   C  
   C  C     C C  C  C  C  
  C  C      C  C  C  C C  
 C  C       C   C  C  CC  
C  C        C    C  C  C  
  C         C     C  C CCC
 C          C      C  CCCC
C           C       C  C  
 C          C        CCCCC
AbCdEeDcBaAbCdEeDcBa_CCCCC

এই সাতটির রঙিন পথগুলির সাথে একই পরীক্ষার কেস C:

এখানে চিত্র বর্ণনা লিখুন

পরীক্ষার কেস 6:

স্ট্রিং-ইনপুট: "XyX"
অক্ষর ইনপুট:'X'

আউটপুট:

XyX
 XX
  X
XyX

এখানে দুটির রঙিন পথগুলির সাথে একই পরীক্ষার কেস X:

এখানে চিত্র বর্ণনা লিখুন

পরীক্ষার কেস 7:

স্ট্রিং-ইনপুট: "aaaa"
অক্ষর ইনপুট:'a'

আউটপুট:

aaaa
aa  
aaa 
 aaa
aaaa

চারটির রঙিন পথগুলির সাথে এখানে একই পরীক্ষার ঘটনা রয়েছে a:

এখানে চিত্র বর্ণনা লিখুন


সুতরাং যখন স্ট্রিংটিতে অক্ষরের 3 টির একাধিক থাকে, আউটপুটটিতে স্ট্রিংয়ের দৈর্ঘ্যের চেয়ে কম সারি থাকতে পারে?
নীল

@ নীল আমি নিশ্চিত নই যে এটি 3 এর একাধিক কিনা, এটি এত তদন্ত করে দেখেনি। আমি শুধু জানি যে বেশিরভাগ length(input)সবকিছু আবার মিলে যায় তবে প্রথম পরীক্ষার কেসটি প্রমাণিত হওয়ার সাথে সাথে এটি আরও শীঘ্রই হতে পারে। তবে মনে হয় আপনি 3 অংশের একাধিক সম্পর্কে সত্যই বলেছেন (যদিও আমি 100% নিশ্চিত নই)।
কেভিন ক্রুইজসেন 11

@ নিল চরিত্রটি পরপর তিনবার প্রদর্শিত হতে পারে এমন কোনও পংক্তি 3 টি লাইন প্রিন্ট করবে তবে এটি দীর্ঘ
Asone Tuhid

2 টি মুদ্রিত লাইনের মধ্যে কি নতুন লাইনের অনুসরণ করা যাবে?
অসোন তুহিদ 13'27

@ অ্যাসোনটুইহিদ দুঃখিত তবে না আমি সম্পূর্ণ প্রত্যাশিত আউটপুটের আগে বা পরে নতুন লাইনগুলি অনুসরণ করার বা নেতৃত্ব দেওয়ার পরিমাণের বিষয়ে চিন্তা করি না, তবে আমি লাইনের মধ্যে প্রবেশ করতে দেব না। তির্যক রেখাগুলিও আর সঠিক হবে না ..
কেভিন ক্রুইজসেন

উত্তর:


1

স্ট্যাক্স , 24 বাইট

»v↕*δó‼Γ█|q┬YM╨|·£↕fßßZo

এটি চালান এবং অনলাইনে ডিবাগ করুন

এটি একই প্রোগ্রামের আসকি উপস্থাপনা।

YxP|Ic{{i3%v-x%%mb-!Czny&PWxP

এটি সমস্ত চরিত্রের সূচকগুলি পায় এবং তারপরে এগুলি পরিবর্তন করে যতক্ষণ না সেগুলি সূচক অনুসারে মূল সূচকগুলির সমান হয়। প্রতিটি পরিবর্তনের জন্য, সেই সূচকগুলিতে অক্ষরের সাথে একটি স্ট্রিং আউটপুট করুন।

Y                               Store character in y.  Now the inputs are x and y.
 xP                             Print x.
   |Ic                          Get all indices of y in x. Make a copy.
      {                   W     Loop until cancelled.
       {        m               Map index array using block.
        i3%v-                   Subtract i%3-1 from each element. i is the loop index.
             x%%                Modulo len(x)
                 b-!            Is the mutated array set-equal to the original?
                    C           If so, cancel W loop
                     zny&P      Print a string with y at all specified indices
                           xP   Finally, print x again

8

পার্ল 5 , -plF 101 100 99 98 97 96 বাইট

Get৯ \0পেতে আক্ষরিক 0 বাইট দ্বারা প্রতিস্থাপন করুন। লক্ষ্য করুন যে ট্রাই ইট অনলাইন লিঙ্কটিতে 97 বাইট রয়েছে কারণ সেখানে আক্ষরিক 0 টি অক্ষর ইনপুট করা সম্ভব বলে মনে হচ্ছে না।

#!/usr/bin/perl -plF
say;say$$l=~y/\0/ /runtil--$l,(s:\Q${\<>}:$$l|=v0 x((++$#$l%3*$l-$l+"@-")%@F).$&;v0:oreg^$$l)eq$_

কোড গল্ফ পারল হাইলাইটার মনে করে #একটি মন্তব্য শুরু করুন। কেমন নির্বোধ 😈

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

কিভাবে এটা কাজ করে

$lপ্রথমটি আমরা চালু হওয়ার পরে কোন রেখার জন্য একটি কাউন্টার হয় (এটি যদিও নিচে গণনা করা হয়, উদাহরণস্বরূপ -3 উপরের স্ট্রিংয়ের নীচে 3 লাইনগুলির জন্য) ।প্রার স্ট্রিংটি মুদ্রণের পরে একবারে নিম্নলিখিতটি বারবার করা হয়।

লক্ষ্য অক্ষরের উপস্থিতিগুলির জন্য প্রথম স্ট্রিংটি অনুসন্ধান করুন এবং এটি অফসেটটি প্রদর্শিত হবে তা গণনা করুন: (++$#$l%3*$l-$l+"@-")%@Fএটি বর্তমান অবস্থানের সাথে লাইন সংখ্যা (নেতিবাচক) বার -1, 0, 1(চক্র)। \0টার্গেট চরিত্রের পরে বহুবার স্ট্রিং তৈরি করুন এবং তার পরে orএটি একটি সঞ্চয়ের মধ্যে $$l(যেটি প্রত্যেকের জন্য আলাদা আলাদা সংযোজক $lএবং কারণটি $lপরিবর্তনের জন্য গণনা করা হয় কারণ $1, $2ইত্যাদি কেবল পঠনযোগ্য)। একই $#$lসাথে লুপের মাধ্যমে প্রতিটি সময় আলাদা অ্যারে বোঝায়। ফলাফলটি হ'ল $lলাইনের তবে \0ফাঁকা স্থানগুলির পরিবর্তে।

প্রথম স্ট্রিংয়ের লক্ষ্য চার্টারগুলি প্রতিস্থাপন করা হয় \0যাতে আপনি \0লক্ষ্য অক্ষরের মূল অবস্থানগুলিতে "গর্ত" (সহ ) দিয়ে মূল স্ট্রিংটি শেষ করেন। যদি আপনি xorযে সঞ্চয়ের সাথে গর্তগুলি পূর্ণ হয় কেবলমাত্র এবং কেবলমাত্র যদি সঞ্চয়ের মূল অবস্থানগুলিতে লক্ষ্য অক্ষর থাকে, তবে ফলাফলটি আসল স্ট্রিং হয়ে যাবে। এটি লুপটি শেষ করতে ব্যবহৃত হয়। লুপটি সমাপ্ত না হলে \0স্থান দ্বারা প্রতিস্থাপিত সহ সঞ্চালকটি মুদ্রণ করুন ।

যখন লুপটি -pবিকল্পটি শেষ করে আবার প্রথম স্ট্রিংটি প্রিন্ট করে এবং প্রোগ্রামটি হয়ে যায়।

লক্ষ্য চরিত্রটি বরং কৃপণ উপায়ে নেওয়া হয় ${\<>}ধর্মান্তরিত একটি লাইন একটি রেফারেন্স যা পরে অবিলম্বে dereferenced এবং Regex মধ্যে প্রতিস্থাপিত হয় stdin থেকে পড়া। \Qউপসর্গ সমস্ত অক্ষর একটি Regex (যেমন বিশেষ হয় পালাতে .এবং *)। \Eঅন্তর্নিহিত হয়। oপরিবর্তক অনুসন্ধান অংশ আবার মূল্যায়ন করা কিন্তু ঠিক পরবর্তী সব ম্যাচে পুনরাবৃত্তি (যেহেতু সেখানে stdin কিছুই আর যা ভাল) ঘটায়।


আমি মনে করি না আপনি সরাসরি নাল বাইট রাখতে পারবেন তবে আপনি এটি বাশ বা কোনও কিছুতে চালাতে পারেন ।
FryAmTheEggman

@ ফ্রাইআম দ্য এজম্যান ধন্যবাদ, এটি একটি দুর্দান্ত ডজ তবে আমার মনে হয় না আমি বিরক্ত করব। লোকেরা কেবল আমাকে বিশ্বাস করতে হবে যে এটি কাজ করে যদি তারা নিজেরাই চেষ্টা করতে না চায় :-)
টন হসপেল

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

4

পাইথন 2 , 199 193 191 বাইট

s,c=input()
print s;l=len(s);r=range;I=j=[i for i in r(l)if s[i]==c]
while 1:
 j=[(j[i]-i%3+1)%l for i in r(len(I))]
 if sorted(j)==I:print s;break
 print''.join((' '+c)[i in j]for i in r(l))

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


যদি লুপটি ব্যতিক্রম হয়ে প্রস্থান করতে পারে:

পাইথন 2 , 187 বাইট

s,c=input()
print s;l=len(s);r=range;I=j=[i for i in r(l)if s[i]==c]
while 1:
 j=[(j[i]-i%3+1)%l for i in r(len(I))]
 if sorted(j)==I:print s;q
 print''.join((' '+c)[i in j]for i in r(l))

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


  • -4 বাইট জনাথন ফ্রেচকে ধন্যবাদ
  • -২ বাইট লিনকে ধন্যবাদ

সম্ভাব্য 189 বাইট (একটি ব্যতিক্রমের মাধ্যমে লুপটি প্রস্থান করা হচ্ছে)।
জোনাথন ফ্রেচ 19'99 এ

আপনি (j[i]-i%3+1)%lদুটি বাইটের জন্য এক জোড়া পেরেন ফেলে দিতে পারেন ।
লিন


2

জাভাস্ক্রিপ্ট (নোড.জেএস) , 197 194 বাইট

s=>c=>{(C=console.log)(s);w=0;g=[];while(~(w=s.indexOf(c,w)))g.push(w++);h=(H=_=>g.map(x=>A[x]=c,A=Array(l=s.length).fill` `)&&A.join``)();while(h!=(y=H(g=g.map((x,i)=>(l-~x-i%3)%l))))C(y);C(s)}

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

বাক্য গঠন সিনট্যাক্স ইনপুট নেয়, যেমন f(s)(c)

মোটেও নিখুঁত নয়, তবে আমার জেএস দরকার। ফাংশন প্রচুর।



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