শুধু নিজেকে পুনরাবৃত্তি


64

আউটপুট এমন একটি প্রোগ্রাম লিখুন

Do not repeat yourself!

আপনার প্রোগ্রাম কোড অবশ্যই নিম্নলিখিত সীমাবদ্ধতা সম্মান করতে হবে:

  • এর দৈর্ঘ্য একটি সমান সংখ্যা হতে হবে
  • প্রতিটি অক্ষর যে অবস্থানে রয়েছে 2n(যেখানে nএকটি পূর্ণসংখ্যার> 0) অবস্থানের অক্ষরের সমান হতে হবে 2n-1। প্রোগ্রামের দ্বিতীয় চরিত্রটি প্রথমটির সমান, চতুর্থটি তৃতীয়টির সমান, ইত্যাদি

নিউলাইনগুলি চরিত্র হিসাবে গণনা!

এটি কোড-গল্ফ, তাই সংক্ষিপ্ততম কোডটি জয়ী!

উদাহরণ

HHeellllooWWoorrlldd একটি বৈধ প্রোগ্রাম

123অথবা AAABBBবা HHeelloভুল

প্রতিপাদন

আপনার সোর্স কোডটি বৈধ কিনা তা যাচাই করতে আপনি এই সিজেএম স্ক্রিপ্টটি ব্যবহার করতে পারেন । আপনার কোডটি কেবল "ইনপুট" বাক্সে পেস্ট করুন এবং স্ক্রিপ্টটি চালান।


51
মজাদার ঘটনা: সমস্যাটির পরিবর্তে যদি তিনটি সমস্যা থাকে DDDooo nnnooottt rrreeepppeeeaaattt yyyooouuurrrssseeelllfff!!!তবে ট্রিগারটিতে
Sp3000

14
আমি ভেবেছিলাম এটি খুব সীমাবদ্ধ হতে পারে তবে উত্তরের ঝাঁকুনি আমাকে ভুল প্রমাণ করে। সুন্দর প্রশ্ন!
ট্রাইকোপলাক্স

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

1
কেউ স্কোরিং স্নিপেট যোগ করতে পারে? আমি সেগুলি রাখা পছন্দ করি, এবং আমি আশা করি প্রতিটি প্রশ্ন তাদের কাছে ছিল।
mbomb007

সমস্ত বর্তমান উত্তরগুলি রহস্যজনক ল্যাংগুলি। আমি ভাবছি যদি কোনও সাধারণ ল্যাং এ এটি সম্ভব হয়?
ড্যাঙ্কমেস

উত্তর:


51

হেক্সাগনি , 166 126 124 বাইট

\\;;;;33rr''22DD..));;;;;;oo;;}}eeoo\\@@nn;;;;ee;;;;aass&&;;uuoo;;;;..\\\\;;ttee..pp;;tt;;;;..rr;;''ll..'';;;;..;;}}ff..}}yy

অন্তর্নিহিত নো-অপ্স এবং সাদা স্থান সন্নিবেশ করানো, এটি নিম্নলিখিত উত্স কোডের সাথে মিলে যায়:

       \ \ ; ; ; ; 3
      3 r r ' ' 2 2 D
     D . . ) ) ; ; ; ;
    ; ; o o ; ; } } e e
   o o \ \ @ @ n n ; ; ;
  ; e e ; ; ; ; a a s s &
 & ; ; u u o o ; ; ; ; . .
  \ \ \ \ ; ; t t e e . .
   p p ; ; t t ; ; ; ; .
    . r r ; ; ' ' l l .
     . ' ' ; ; ; ; . .
      ; ; } } f f . .
       } } y y . . .

আমি নিশ্চিত যে এটিকে আরও আরও সংক্ষিপ্ত করা সম্ভব, এবং সম্ভবত এটি 6 পাশের দৈর্ঘ্যের মধ্যেও সমাধান করা সম্ভব তবে এটি জটিল হয়ে উঠছে ...

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

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

চিত্র দিয়ে তৈরি Timwi এর Hexagony Colorer

কোডটি সম্পূর্ণ রৈখিক। \শুরুতে ডান তির্যক, এই ধরনের যে আমরা এ সব দ্বিগুণ অক্ষর সম্পর্কে চিন্তা করার প্রয়োজন হবে না মধ্যে আইপি পুননির্দেশ করা হয়েছে। রঙিন পাথগুলি কমলা / লাল, নীল / ধূসর, সবুজ, বেগুনি ক্রমে কার্যকর করা হয় (যখন একই রঙের দুটি পাথ থাকে তখন ডান হাতের চারপাশে মোড়ানোর আগে প্রথমে বাম-হাতের পথটি কার্যকর করা হয়)।

যদি আমরা কোনও অপস, আয়না এবং আদেশগুলি অন্যদের দ্বারা ওভাররাইড করা উপেক্ষা করি তবে লিনিয়ার কোডটি এখানে নেমে আসে:

D;o;&32;}n;o;t;';}r;e;p;e;a;t;';}y;o;u;r;s;e;l;f;');@

হেক্সাগনির চিঠিগুলি কেবল অক্ষরের অক্ষর কোডের জন্য বর্তমান মেমরি প্রান্তের মান সেট করে। ;একটি অক্ষর হিসাবে বর্তমান স্মৃতি প্রান্ত মুদ্রণ। আমরা &মেমরি প্রান্তটি পুনরায় সেট করতে 0এবং এর সাথে একটি স্থান মুদ্রণ করতে ব্যবহার করি 32;}একটি অন্য প্রান্তে সরানো হয়, যাতে আমরা 32আরও স্পেসগুলির জন্য মনে রাখতে পারি । বাকী কোডটি কেবলমাত্র নতুন প্রান্তে অক্ষরগুলি মুদ্রণ করে এবং মাঝে মাঝে ';}একটি স্থান মুদ্রণের জন্য পিছনে পিছনে চলে যায় । শেষে আমরা আবার স্থান দিয়ে প্রান্তে চলে যাই ', মানটি 33 দিয়ে বৃদ্ধি )করে বিস্মৃত চিহ্নটি মুদ্রণ করি। @প্রোগ্রামটি সমাপ্ত করে।


4
এটি সত্যিই চিত্তাকর্ষক !!!
উইজার্ডঅফমেন্লো

আপনি কীভাবে এই সিদ্ধান্তে পৌঁছলেন যে এটি 6 বা 5 এর আকারেও সম্ভব ? আমি সবেমাত্র 7 টি আকার সবেমাত্র সবে ফিট করে।
টিমভি

@ টিমউই 5 সম্ভবত কিছুটা অত্যুক্তিযুক্ত ছিল, তবে একটি মাত্র বাদে কোডটিতে অক্ষর জোড়গুলির ;মধ্যে এখনও একেবারে পুনরায় ব্যবহার করা হয়নি। বর্তমান কোডটি আমার মনে যে প্রথম জিনিসটি এসেছে তা হ'ল তাই আমি ভাবছি যদি কেউ যথেষ্ট চেষ্টা করে তবে আরও জটিল জটিল সমাধান পাওয়া সম্ভব যা সেমিকোলনগুলিকে পুনরায় ব্যবহার করে এবং এমনকি কিছু অক্ষরও এটি ফিট করতে পারে পাশের দৈর্ঘ্যের মধ্যে 6
মার্টিন এন্ডার

Size আকারে পেতে, আপনাকে size আকারের তুলনায় ৩ compared টি অক্ষর বাঁচাতে হবে the আপনি এই মুহুর্তে un টি অব্যবহৃত স্লট ব্যবহার করলেও, আপনাকে 30 টি সংরক্ষণ করতে হবে you আপনি ;কেবলমাত্র একবারে পুনরায় ব্যবহার করতে পারবেন কারণ আপনি এগুলি অনুভূমিকভাবে অতিক্রম করতে পারে না। ;আপনার কোডে কেবল 23 টি রয়েছে এবং কেবলমাত্র 6 টি চরিত্রের পুনরাবৃত্তি (2 × o, 1 × t, 1 × r, 2 × e) কেবল 29 দিচ্ছে Pers ব্যক্তিগতভাবে, এটি আমাকে বিশ্বাস করে যে that আকারটি অসম্ভব ... ।
টিমভি

44

গল্ফস্ক্রিপ্ট, 130 84 76 বাইট

22..!!..00)){{DDoo  nnoott  rreeppeeaatt  yyoouurrsseellff}}``%%>><<[[33]]++

এটি ওয়েব গল্ফস্ক্রিপ্টে অনলাইনে চেষ্টা করুন ।

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

গল্ফস্ক্রিপ্ট ইন্টারপ্রেটার স্ট্যাকের উপর একটি খালি স্ট্রিং রেখে শুরু হয়।

22 # Push 22.
.. # Push two copies.
!! # Negate the last copy twice. Pushes 1.
.. # Push two copies.
00 # Push 0.
)) # Increment twice. Pushes 2.

   # STACK: "" 22 22 1 1 1 2

{{DDoo  nnoott  rreeppeeaatt  yyoouurrsseellff}}

`` # Push a string representation of the string representation of the block.

   # This pushes "{{DDoo  nnoott  rreeppeeaatt  yyoouurrsseellff}}" (with quotes).

%% # Take every second element of that string, then every element of the result.
>> # Discard the first element of the result. Repeat.
<< # Truncate the result to length 22. Repeat.
[[ # Begin a two-dimensional array.
33 # Push 33, the character code of '!'.
]] # End the two-dimensional array.
++ # Concatenate the empty string, the 22-character string and the array [[33]].

একটি স্ট্রিং দিয়ে একটি অ্যারের সংমিশ্রণ চ্যাপ্টা করে, ফলস্বরূপ কাঙ্ক্ষিত আউটপুট।


38

ইউনারি , ~ 1.86 × 10 222

সাধারণ ব্রেইনফাক -> অবিরাম উত্তর। খুব উপ-অনুকূল;)।

প্রোগ্রামটি 0 এর একটি এমনকি সংখ্যক নিয়ে গঠিত; বিশেষভাবে:

1859184544332157890058930014286871430407663071311497107104094967305277041316183368068453689248902193437218996388375178680482526116349347828767066983174362041491257725282304432256118059236484741485455046352611468332836658716

তাদের মধ্যে.

আসল ব্রেইনফাক কোড:

++++[++++>---<]>+.[--->+<]>+++.[--->+<]>-----.+[----->+<]>+.+.+++++.[---->+<]>+++.---[----->++<]>.-------------.+++++++++++.-----------.----.--[--->+<]>-.[---->+<]>+++.--[->++++<]>+.----------.++++++.---.+.++++[->+++<]>.+++++++.------.[--->+<]>-.

3
আপনার দেওয়া কোড ব্লকের কোনওটিই ডাবল-আপ বিধিটিকে সন্তুষ্ট করে না। আমি কী মিস করছি?
doppelgreener

26
@ ডপপেলগ্রিনিয়ার: "কোড" এর প্রথম ব্লকটি কেবল একটি বিশাল সংখ্যা। বিশেষত, 1ইউনারি প্রোগ্রামে s এর সংখ্যা যা অনুরোধ করা স্ট্রিংটিকে আউটপুট করে। দ্বিতীয় কোড ব্লকটি বিএফ প্রোগ্রাম যা এটি উত্পাদন করতে ব্যবহৃত হয়েছিল। যেহেতু ইউনারি প্রোগ্রামটি সম্পূর্ণরূপে 1গুলি দ্বারা তৈরি , এটি তুচ্ছভাবে পুনরাবৃত্তি প্রয়োজনীয়তা পূরণ করে।
এল'েন্ডিয়া স্টারম্যান

8
এছাড়াও শূন্যের সংখ্যা (ভাগ্যক্রমে?) একটি
আর্নাড

1
উত্তরটি সম্পাদনা করার জন্য আমি স্বাধীনতা নিয়েছি যাতে নম্বরটি কোড হওয়ার কথা বলে মনে হয় না।
টিমভি

2
@ কামেট্রিক্সম এটি ইউনারি প্রোগ্রামের একটি গোলুনার বর্ণনা। লিখিত হিসাবে গোলুনার প্রোগ্রাম শর্ত পূরণ করে না।
পাওলো ইবারম্যান

34

রুবি - 2100 1428 1032 820 670 বাইট

এটি ধরে নিয়েছে আউটপুটটি কোনও ফাংশন থেকে ফেরতের মান হতে পারে (এটি নির্দিষ্ট করা হয়নি যে আউটপুটটি STDOUT এ হওয়া দরকার)

কোড:

((((((((((((((((((((((((((((((((((((((((((((((""<<66++11**00++11**00))<<99++11++11**00))<<((55>>11**00))++((11>>11**00))))<<99++11))<<99++11++11**00))<<99++((33>>11**00))++11**00))<<((55>>11**00))++((11>>11**00))))<<99++11++((11**00<<11**00<<11**00))))<<99++11**00++11**00))<<99++11++11**00++11**00))<<99++11**00++11**00))<<88++((11>>11**00))++((11**00<<11**00<<11**00))))<<99++((33>>11**00))++11**00))<<((55>>11**00))++((11>>11**00))))<<99++22))<<99++11++11**00))<<99++((33>>11**00))++11**00++11**00))<<99++11++((11**00<<11**00<<11**00))))<<99++((33>>11**00))))<<99++11**00++11**00))<<99++((11>>11**00))++((11**00<<11**00<<11**00))))<<99++11**00++11**00++11**00))<<33))

কৌশলটি হ'ল খালি স্ট্রিং থেকে স্ট্রিংটি ""অ্যাপেন্ড অপারেশন <<এবং অক্ষরের ASCII কোড ব্যবহার করে তৈরি করা।

এএসসিআইআই কোডগুলির জন্য নম্বর পেতে আমি সংখ্যাটি সহজেই উত্পন্ন করতে পারে এমন মানগুলিতে বিভক্ত করার চেষ্টা করছি। উদাহরণ হিসাবে ASCII 90ন্যায্য 88+1+1, যা:

  • 88 ঠিক আছে
  • 11**00সহজ 11^0, যা যা1

সৌভাগ্যবশত উভয় ++এবং --অর্থ হবে addরুবি মধ্যে, তাই আমি লিখতে পারেন 90যেমন88++11**00++11**00

কিছু সংখ্যায় সহজভাবে পেতে 1 টি যুক্ত করার চেয়ে সহজ কিছু কৌশল রয়েছে, উপরের উত্পন্ন করতে আমি যে কোডটি ব্যবহার করছি তা এখানে রয়েছে (এতে আমি যে সমস্ত ম্যাপিং ব্যবহার করছি তা অন্তর্ভুক্ত রয়েছে):

d = "Do not repeat yourself!"

d.each_char do |c|
  print "(("
end

print '""'

VALUES = [
  [0,'00'],
  [1,'11**00'],
  [4,'((11**00<<11**00<<11**00))'],
  [5,'((11>>11**00))'],
  [11,'11'],
  [16,'((33>>11**00))'],
  [22,'22'],
  [27,'((55>>11**00))'],
  [33,'33'],
  [38,'((77>>11**00))'],
  [44,'44'],
  [49,'((99>>11**00))'],
  [55,'55'],
  [66,'66'],
  [77,'77'],
  [88,'88'],
  [99,'99']
].reverse

d.each_char do |c|
  print "<<"
  num = c.ord
  while num != 0
    convert = VALUES.find{|val|val.first<=num}
    print convert.last
    num -= convert.first
    print "++" unless num == 0
  end
  print "))"
end

আমি এখনও অন্য কৌশল সম্পর্কে চিন্তা করছি একটি নম্বর পেতে প্রয়োজনীয় অক্ষরগুলি হ্রাস করতে।

মনে রাখবেন যে আপনি যদি -rppপতাকা ব্যবহার করেন এবং কোডটির ppশুরুতে এটি যুক্ত করেন:

pp((((((((((((((((((((((((((((((((((((((((((((((""<<66++11**00++11**00))<<99++11++11**00))<<((55>>11**00))++((11>>11**00))))<<99++11))<<99++11++11**00))<<99++((33>>11**00))++11**00))<<((55>>11**00))++((11>>11**00))))<<99++11++((11**00<<11**00<<11**00))))<<99++11**00++11**00))<<99++11++11**00++11**00))<<99++11**00++11**00))<<88++((11>>11**00))++((11**00<<11**00<<11**00))))<<99++((33>>11**00))++11**00))<<((55>>11**00))++((11>>11**00))))<<99++22))<<99++11++11**00))<<99++((33>>11**00))++11**00++11**00))<<99++11++((11**00<<11**00<<11**00))))<<99++((33>>11**00))))<<99++11**00++11**00))<<99++((11>>11**00))++((11**00<<11**00<<11**00))))<<99++11**00++11**00++11**00))<<33))

তারপরে অতিরিক্ত 2 + 4 বাইটের জন্য এটি পুরোপুরি সম্পূর্ণ প্রোগ্রাম হিসাবে কাজ করতে পারে তবে এটি "প্রয়োজনীয় স্ট্রিংয়ের আগে এবং পরে অতিরিক্ত মুদ্রণ করবে :

উদাহরণ:

$ ruby -rpp golf.rb
"Do not repeat yourself!"

আপনি কেন পরিষ্কারভাবে বলতে পারবেন যে এটি সম্পূর্ণরূপে মেনে চলছে না? এটি আমার কাছে নিখুঁত দেখাচ্ছে, এবং এমনকি ppরত্নটি একটি দ্বৈত অক্ষর ...
ট্রাইকপ্লেক্স

3
@ ট্রাইকোপলাক্স: এটি পোস্টে: ১. "আউটপুটে অতিরিক্ত অক্ষর এবং ২. -rppপতাকার প্রয়োজনীয়তা (যা পছন্দ নয় --rrpp)
জাজটপওয়াই

1
এই উত্তরটি দুর্দান্ত তবে যে উত্তরগুলি নির্দিষ্টকরণগুলি পূরণ করে না সেগুলি মুছে ফেলার বিষয়।
গম উইজার্ড

1
@ স্পটআপ ওয়াই একেবারে স্পষ্ট করার জন্য, চ্যালেঞ্জের বিধিগুলি অনুসরণ করে না এমন প্রতিক্রিয়া মুছে ফেলা সাইটের নীতি।
মাইক বুফার্দেচি


23

> <> , 174 বাইট

vv

77

99

**

00

77

bb

**

pp

""

!!

ff

ll

ee

ss

rr

uu

oo

yy



tt

aa

ee

pp

ee

rr



tt

oo

nn



oo

DD

""

~~

oo

ll

11

==

;;

00

66

bb

**

..

ধন্যবাদ, এক অর্থে বিধিনিষেধটি উল্লম্বভাবে প্রযোজ্য নয়। তবে সবচেয়ে বড় সমস্যাটি হ'ল আমাদের প্রত্যেকটি নতুন লাইন দ্বিগুণ করা দরকার।

মোটামুটিভাবে চালিত কোডটি এরকম হয়:

v            Redirect instruction pointer to move downwards
79*07b*p     Place a ? on row 77 before the first ;
"..."        Push "Do not repeat yourself!" backwards, riffled between spaces

[main loop]
~o           Pop a space and output a char
l1=?;        If there is only the final space left, halt
06b*.        Jump back to the start of the loop

নোট করুন যে প্রোগ্রামটির কোনও ডাবল স্পেস নেই - যখন স্ট্রিং মোডে থাকে,> <> খালি ঘরগুলির জন্য স্পেস চাপ দেয়। বিপরীতভাবে, তবে এর অর্থ হ'ল যে কোনও সমাধান g(উত্স কোড থেকে একক সেল পড়ুন) ব্যবহার করে তা আরও জটিল হবে, যেহেতু প্রোগ্রামে কোন স্পেস রয়েছে সেগুলি পড়ার সময় NULs হয়ে যায়।

(দ্রষ্টব্য: এটি কোনও ত্রুটির সাথে বন্ধ হয়ে গেলে এটি 50 বাইট সংক্ষিপ্ত হতে পারে , তবে আমি এটি এটি পছন্দ করি))


1
কাজের সঠিক সরঞ্জাম ...
এরিক আউটগলফার

20

স্ক্রিপ্টিং , 186 146 বাইট

끄끄 닶닶 긂긂 닦닦 닶닶 덇덇 긂긂 댧댧 뉖뉖 댇댇 뉖뉖 눖눖 덇덇 긂긂 뎗뎗 닶닶 덗덗 댧댧 댷댷 뉖뉖 닆닆 뉦뉦 긒긒

껢껢 鎵 鎵 ❶❶ 合 合 虛虛 替 替 標 標 現 現 併 併 一一 終 終

পরিষ্কার হওয়ার জন্য, কোডের তিনটি লাইন রয়েছে যার মাঝেরটি খালি, কারণ নতুন লাইনের নকল করা দরকার। বাইট গণনাটি ইউটিএফ -16 এনকোডিংয়ের উপর ভিত্তি করে।

ব্যাখ্যা

শুরুতে কোরিয়ান অক্ষরের ব্লক স্ট্রিংকে ধাক্কা দেয় "DDDof� \"\u0002nf�of�twG \"\u0002rw'efVpw\aefVaf\u0016twG \"\u0002yw�of�uwWrw'sw7efVlf�fff!\"\u0012"। আপনি লক্ষ্য করবেন যে প্রতিটি তৃতীয় অক্ষর আমরা চাই একটি চরিত্র; বাকীটা হতাশ কারণটা এখানে:

স্লিপটিংয়ে, দুটি কোরিয়ান অক্ষর তিনটি বাইট এনকোড করে। সুতরাং, প্রতিটি কোরিয়ান চরিত্র কার্যকরভাবে 12 বিট এনকোড করে। স্ট্রিংটি শুরু করতে D, প্রথম 8 টি বিট থাকতে হবে 0x44; বাকিগুলি কোনও ব্যাপার নয়, তবে যেহেতু আমাদের প্রতিটি চরিত্র পুনরাবৃত্তি করতে হবে, 12 তম থেকে 20 তম বিটও হতে চলেছে 0x44। সুতরাং, আমাদের 0x44n44nকাছে কিছু এন এর ফর্মের মান হবে যা তিনটি বাইটে বিভক্ত হয় 0x44 0xn4 0x4n

এর জন্য o, যা 0x6Fআমরা বাইটগুলি পাই 0x6F 0xn6 0xFn

যেহেতু আমি অলস, আমি এনকোডিং শুরু "DDDooo nnnooottt (etc.)"এবং তারপর পূর্ববর্তী সঙ্গে প্রত্যেক অন্যান্য চরিত্র, যে কারণে আমি পেতে প্রতিস্থাপিত 0x444444= "DDD"জন্য Dএবং 0x6F66F6= "of�"জন্য oনেই কারণ 0xF6নিজে অবৈধ UTF-8 এনকোডিং হয়।

এখন, প্রোগ্রাম ফিরে। প্রোগ্রামটির বাকি অংশগুলি নীচের দিকে এগিয়ে যায়:

껢껢 - স্ট্রিংটি পুশ করে ".\"�"

鎵 鎵 - আমাদের সাথে রেখে দু'বার শেষ চরিত্রটি সরিয়ে দেয় "."

❶❶ - দুটি সদৃশ। এখন স্ট্যাক:[".", ".", "."]

合 合 - দু'বার সম্মতি জানানো। এখন স্ট্যাক:["..."]

এখন, আমি পরবর্তীটি যা করতে চাই তা হ'ল "..."নিয়মিত এক্সপ্রেশন হিসাবে ব্যবহার করা যাতে আমি string ... 終 লুপ কনস্ট্রাক্ট ব্যবহার করে একবারে মূল স্ট্রিং থেকে তিনটি অক্ষর মেলে match তবে, যেহেতু প্রতিটি নির্দেশ নকল হয়, তাই আমার একে অপরের অভ্যন্তরে নিয়মিত-প্রকাশের দুটি নিয়মিত লুপ থাকা দরকার এবং যদি স্ট্যাকটি কম যায় তবে আমি রানটাইম ত্রুটি পাই। অতএব,

虛虛 - খালি স্ট্রিংটি দু'বার চাপুন

এবং তারপরে লুপগুলি শুরু করুন। এইভাবে, বাইরের লুপটি কেবল একবার পুনরাবৃত্তি করে কারণ এটি ""স্ট্রিংয়ের বিরুদ্ধে নিয়মিত প্রকাশের সাথে ""মেলে যা একক ম্যাচ দেয়। "..."বড় স্ট্রিংয়ের বিপরীতে প্রতিটি ম্যাচের জন্য একবারের অভ্যন্তরীণ লুপটি চলে । লুপটির দেহটি হ'ল:

標 標 - স্ট্যাকের উপর দুটি চিহ্ন চাপুন। এখন স্ট্যাক:[mark mark]

現 現 - বর্তমান রেজেক্স ম্যাচের দুটি অনুলিপি চাপুন। এখন স্ট্যাক:[mark mark "DDD" "DDD"]

併 併 - প্রথম চিহ্ন পর্যন্ত সম্মিলিত। এখন স্ট্যাক:["DDDDDD"]

一一 - সেই স্ট্রিংয়ের প্রথম অক্ষরটি নিন এবং তারপরে (অতিরিক্তভাবে) এর প্রথম চরিত্রটি নিন। স্ট্যাক এখন আমরা চাই অক্ষর আছে।

অভ্যন্তরীণ লুপটি এখানেই শেষ হয়, তাই নিয়মিত প্রকাশের প্রতিটি ম্যাচ সেই ম্যাচের প্রথম চরিত্রের সাথে প্রতিস্থাপিত হয়। এটি স্ট্যাকের মধ্যে পছন্দসই স্ট্রিং ফেলে leaves

তারপরে বাইরের লুপটি শেষ হয়, যার পরে পছন্দসই স্ট্রিংটি স্ট্যাকটি থেকে সরিয়ে নেওয়া ""হয় এবং স্ট্রিংয়ের একমাত্র ম্যাচটি ""এটির সাথে প্রতিস্থাপন করা হয়, স্ট্যাকের উপরে আবার পছন্দসই স্ট্রিংটি রেখে।


3
উম্ম ... আপনি এখানে কোড বিন্যাসটি ব্যবহার করেন নি কেন? এটা কি চীনা চরিত্র?
এরিক আউটগল্ফার

@ এরিকথ আউটগল্ফার আমি একই জিনিসটি ভাবছিলাম (এবং এগুলি চীনা নয়, কোরিয়ান চরিত্রগুলি)।
কেভিন ক্রুজসসেন

@ কেভিন ক্রুইজসেন আমার মনে হয় সেখানে কিছু চীনা চরিত্রও রয়েছে। প্রকৃতপক্ষে, স্পেক বলছে যে এটি হ্যাঙ্গুলকে ডেটাগুলির জন্য এবং চীনা নির্দেশাবলীর জন্য ব্যবহার করে।
এরিক দি আউটগল্ফার

@ এরিকথ আউটগলফার আহ, আপনি সত্যই বলেছেন আমার আরটিএফএম করা উচিত .. :)
কেভিন ক্রুইজসেন

12

ল্যাবরেথ , 528 বাইট

66))__vv          ..33::00&&__vv          ..44__99||__vv          ..33::00&&__vv            ..99))__vv            ..99))__vv      ..44__88$$__vv          ..22__99++__vv          ..22__99$$__vv            ..22__99))$$__vv      ..33__77$$__vv            ..33__vv

      ..44__99||__^^          ..11__99++__^^          ..44__88$$__^^          ..44((__88$$__^^      ..11))__99++__^^      ..99((__^^          ..33::00&&__^^          ..44__99||__^^          ..44((__88$$__^^            ..99))__^^          ..11__99$$((__^^    ..@@

xx

ডাবল নিউলাইনগুলি আঘাত করেছে, তবে অন্তত এটি প্রমাণ করে যে এটি করণীয়!

প্রতিটি অক্ষর একের পর এক মুদ্রিত হয়, প্রথমে কোড পয়েন্ট গঠন করে একটি একক চর মুদ্রণ করে। কোড পয়েন্টগুলি দ্বারা গঠিত:

D 68  66))
o 111 44__99||
  32  33::00&&
n 110 11__99++
t 116 44__88$$
r 114 44((__88$$
e 101 99))
p 112 11))__99++
a 97  99((
y 121 22__99++
u 117 22__99$$
s 115 22__99))$$
l 108 33__77$$
f 102 11__99$$((
! 33  33

কোথায়

)(        Increment/decrement by 1 respectively
&|$       Bitwise AND/OR/XOR respectively
+         Add
:         Duplicate
_         Push zero
0-9       Pop n and push n*10+<digit>

ল্যাবরেথের অঙ্কগুলির অস্বাভাবিক আচরণটি শোষণ করা হয় 33::00&&, যা আসলে

[33] -> [33 33] -> [33 33 33] -> [33 33 330] -> [33 33 3300] -> [33 32] -> [32]
     :          :             0              0               &          &

প্রতিটি একক চর মেকানিজম দিয়ে মুদ্রিত হয়

__vv

  ..

xx

কেবল xxগ্রিডকে প্যাড করার জন্য বিদ্যমান রয়েছে যাতে এটি 5 টি উচ্চ। প্রথমে __দুটি জিরো পুশ করুন, তারপরে আমরা একটি গ্রিড রোটেশন অপারেটরটিকে আঘাত করি v। আমরা একটি শূন্য পপ এবং ঘোরান:

__ v
  v
   .
  .
xx

এবং আবার:

__ v

  v.

xx.

এরপরে আমরা .তৃতীয় সারিতে ডানদিকে সরানো যাক , এভাবে কেবল একবার মুদ্রণ কমান্ড কার্যকর করা হবে।


আপনি একবারে মুদ্রণ কমান্ড কার্যকর করতে ব্যবহৃত কৌশলটি পছন্দ করি। এটা অত্যন্ত চালাক।
টিমউই

11

সিজেম - 176 136 বাইট

66))HH77++GG00++BB88++HH77++EE88++GG00++DD88++99))CC88++99))AA77++EE88++GG00++BB99++HH77++KK77++DD88++JJ77++99))AA88++II66++33]]{{cc}}//

আমার প্রোগ্রামের আকারটি দুটি দ্বারা ভাগ করার জন্য Sp3000 ধন্যবাদ :-)

ব্যাখ্যা

  • কোডগুলি HH77++, GG00++... সংখ্যাগুলি যোগ করে অক্ষরের পূর্ণসংখ্যার ascii কোডটি গণনা করুন (উদাহরণস্বরূপ: H এইচএইচ 77++ স্ট্যাকের উপরে 17, 17 এবং 77 চাপায়, তারপর এই 3 নম্বর যুক্ত করুন)
  • কোডের অংশটি শেষের ]]{{cc}}//দিকে এএসআইআই কোডের মধ্য দিয়ে লুপ করে সেগুলি অক্ষরে রূপান্তরিত করে।

এখানে চেষ্টা করুন


1
আপনি কি কোনও প্রোগ্রাম দিয়ে এটি তৈরি করেছেন? খুব কমপক্ষে, একেবারে 33cc
শেষটি

@ Sp3000 হ্যাঁ, কেবল একটি প্রোগ্রাম চালিয়েছেন যা ++ এর সাথে বিভিন্ন সংমিশ্রণ চেষ্টা করেছে। আমি অন্যান্য অপারেটরদের চেষ্টা করি নি ...
আরনাড

3
অন্য দ্রষ্টব্য: ccসর্বত্র পরিবর্তে, ]]{{cc}}//শেষে করুন
Sp3000

11

স্ব-পরিবর্তনকারী মস্তিষ্ক *** , 72 বাইট

নোট যেটি \x00আক্ষরিক NULহেক্স বাইট উপস্থাপন করে (খালি ঘর)। উত্স কোডটি টেপের উপর প্রারম্ভিক কক্ষের বামে স্থাপন করা হয়েছে।

!!fflleessrruuooyy  ttaaeeppeerr  ttoonn  ooDD\0\0<<<<<<++[[<<]]<<[[..<<]]

ব্যাখ্যা

!!fflleessrruuooyy  ttaaeeppeerr  ttoonn  ooDD  The string on the tape for easy printing
\x00\x00                                        A separator to make printing shorter
<<<<<<++                                        Change first '.' to '0' (comment)
[[<<]]<<                                        Move to separator, then left to string
[[0.<<]]                                        Print string

এছাড়াও, এই প্রোগ্রামটি করার আগে, আমি উত্সটিতে কেবল বিএফ অক্ষর ব্যবহার করে একটি তৈরি করছিলাম। এটা সম্ভব! এটি আরও দীর্ঘতর, যেহেতু একটি বিজোড় ASCII মানের জন্য, আমি দ্বিগুণ মান তৈরি করতে যাচ্ছিলাম, তারপরে দুটি দ্বারা বিভক্ত। কিছুটা সংক্ষিপ্ত আকারে শুরু করার সাথে বিজোড় মানগুলি তৈরি করতে পুরো উত্সটি সংশোধন করা হবে।


এই আউটপুট DDoo nnoott rreeppeeaatt yyoouurrsseellff!!(ডাবল স্পেস) না? আমি দুটি .এস।
এরিক আউটগল্ফার

আপনি আমার উত্তর পড়ার জন্য @ এরিক্থে গল্ফার সময় Change first '.' to '0'। আমি ব্যাখ্যাটি (আবার) দেখানোর জন্য পরিবর্তন করেছিলাম যে প্রথমটি .শূন্যে পরিবর্তন করা হয়েছে।
mbomb007

7

জেলি , by 66 বাইট (প্রতিদ্বন্দ্বী)

““DDoo  nn““oott  rreepp““eeaatt  yyoouurrss““eellff!!””ṛṛḷḷWWQQ€€

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

Factoid

আপনি প্রতিটি দ্বিতীয় অক্ষর অপসারণ করলে প্রোগ্রামটি এখনও কাজ করে।

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

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

““DDoo  nn““oott  rreepp““eeaatt  yyoouurrss““eellff!!”

স্ট্রিংয়ের একটি অ্যারের প্রদান করে। আক্ষরিক একটি দিয়ে শুরু হয়, একটি দিয়ে শেষ হয় এবং স্ট্রিংগুলি অভ্যন্তরীণভাবে সীমিত করা হয় । ফলাফল হলো

["", "DDoo  nn", "", "oott  rreepp", "", "eeaatt  yyoouurrss", "", "eellff!!"]

লিঙ্কটির যুক্তি এবং রিটার্ন মানটি স্ট্রিংগুলির এই অ্যারেটিতে সেট করা থাকে, তারপরে উত্স কোডের বাকী অংশটি কার্যকর করা হয়।

<literal>”ṛṛḷḷWWQQ€€  Argument/return value: A (string array)

         ”ṛ           Yield the character 'ṛ'.
           ṛ          Select the right argument of 'ṛ' and A: A.
            ḷ         Select the left argument of A and A: A.
              W       Wrap; yield [A].
             ḷ        Select the left argument of A and [A]: A.
               W      Wrap; yield [A].
                Q     Unique; deduplicate [A]. Yields [A].
                 Q€€  Unique each each; for each string s in A, deduplicate s.

অ-প্রতিযোগিতা কেন?
justhalf

1
কারণ জেলি ডিসেম্বর 2015 এ তৈরি হয়েছিল, সুতরাং এটি তিন মাসের মধ্যে এই চ্যালেঞ্জটিকে পোস্ট করে।
ডেনিস


5

গ্যামাপ্লেক্স , 66 বাইট

\\

XX""!!fflleessrruuooyy  ttaaeeppeerr  ttoonn  ooDD""XXXXrrRREE

গ্যামাপ্লেক্স একটি 2 ডি ভাষা যা প্রথম নতুন লাইনের অবস্থানটি লাইন দৈর্ঘ্যের হিসাবে ব্যবহার করে এবং অন্যান্য সমস্ত নতুনলাইন উপেক্ষা করে।


5

এমএসএম , 270 160 বাইট

!!'',,ff'',,ll'',,ee'',,ss'',,rr'',,uu'',,oo'',,yy'',,  '',,tt'',,aa'',,ee'',,pp'',,ee'',,rr'',,  '',,tt'',,oo'',,nn'',,  '',,oo'',,DD'',,......................

আমার প্রথম এমএসএম প্রোগ্রাম!

এমএসএম-এ স্ট্রিং আউটপুট পৃথক অক্ষরগুলিকে স্ট্যাকের উপর চাপ দিয়ে এবং এগুলি দ্বারা একটি একক স্ট্রিংয়ে যুক্ত হওয়ার মাধ্যমে সম্পন্ন হয় .eg

!olleH.....

সংখ্যাটি .অক্ষরের সংখ্যার চেয়ে কম less জন্য Do not repeat yourself!আমাদের 22 .টি প্রয়োজন । ভাগ্যক্রমে এটি একটি সমান সংখ্যা, সুতরাং আমাদের ১১ টি ডাবল রয়েছে

......................

অক্ষরগুলি সামনে রেখে আরও কিছু প্রচেষ্টা প্রয়োজন। নমুনা

cc'',,

প্রতিটি চরিত্রের জন্য কৌশল করে c। এটি নিম্নলিখিত হিসাবে মূল্যায়ন করে

cc'',,            push c (remember: commands are taken from the left and operate on the right)
c'',,c            push c
'',,cc            quote ' and push
,,cc'             pop
,cc               pop
c                 voilà!

আমাদের 22 এ জাতীয় নিদর্শনগুলির প্রয়োজন 22 টি কমান্ড কমান্ড দ্বারা শুরু !!'',,এবং শেষ হওয়া ।DD'',,.


5

বেফঞ্জ 98, 70 66 বাইট

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

আমার অবৈধ উত্তরের পরে, এখানে আরও একটি ভাল যা আসলে চ্যালেঞ্জের সাথে খাপ খায়!

2200**xx""!!fflleessrruuooyy  ttaaeeppeerr  ttoonn  ooDD��""kk,,@@

( ��পরিবর্তে 0x17, অক্ষর ব্যবহারের পরামর্শ দেওয়ার জন্য মার্টিন ইন্ডারকে ধন্যবাদ জানাই 88ff++)

ব্যাখ্যা:

2200          Push 2, 2, 0, and 0 onto the stack
*             Multiply 0 and 0, yielding 0
*             Multiply 2 and 0, yielding 0
              The stack is now [2, 0]
x             Pop a vector off the stack and set the instruction pointer delta to that
              The instruction pointer is now skipping over every other character, since the delta is (2, 0)
"!f ... oD�" Push the string onto the stack, with the number 23 (number of characters in the string) at the top
k,            Pop characters off the stack and print them, 23 times
@             End the program

এর পরিবর্তে স্ট্রিংয়ের অভ্যন্তরে একটি অরক্ষিত অক্ষর (কোড পয়েন্ট 23) ব্যবহার করে আপনি চারটি বাইট সংরক্ষণ করতে পারেন 8f+: tio.run/nexus/…
মার্টিন

4

ডিসি , 348 346 342 306 290 278 বাইট

ফাইল dnr6.short.dc(নতুন লাইনের পিছনে ছাড়াই):

AAzz--22222222vvPPAAAAAAAAvvPP88vvFFFFFFFFvv00++AAzz--PP11vvFFFFFFFFvv00++AAAAAAvvPP11vvEEEEEEEEvv00++OOOO//44999999vv++PP77II++OOOO//44999999vv++PPAAAAAAvv88vvFFFFFFFFvv00++PPAAzz--BBPP11vvFFFFFFFFvv00++77OOOO++++PPOOOO//44999999vv++66vvFFFFFFFFvv00++PP99zz++OO88++PPAAAAvv33PP

চালান:

$ dc < dnr6.short.dc 
Do not repeat yourself!


3

ব্যাকহ্যান্ড , 54 বাইট

vv""!!fflleessrruuooyy  ttaaeeppeerr  ttoonn  ooDD""HH

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

যেহেতু ব্যাকহ্যান্ডের পয়েন্টারটি ইতিমধ্যে তিনটি কোষে টিক টিক করছে, তাই আমাদের কেবলমাত্র ব্যবহারটি হ্রাস করতে হবে এটি ব্যবহার করে 2 তে v


2

রেটিকুলার, নন-কেপটিং, 62 বাইট

2200**UU""DDoo  nnoott  rreeppeeaatt  yyoouurrsseellff!!""oo;;

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

অংশে ব্যাখ্যা:

2200**
2200    the stack looks like [2 2 0 0]
    *   [2 2 0*0]
     *  [2 2*0*0]
        [2 0]

Uনির্দেশকের দিকটি সেট করে (2, 0)যেটি 2এক্স-ইউনিট এবং 0ওয়াই-ইউনিটগুলিকে সরিয়ে নিয়ে যায়, সুতরাং এটি পরবর্তী অক্ষরটি শুরু না করে প্রতিটি অক্ষর Uএড়িয়ে যায়। তারপরে, অন্যান্য প্রতিটি চরিত্র রেকর্ড করা হয়, এবং এটি সমান:

"Do not repeat yourself!"o;

যা একটি সাধারণ আউটপুট প্রোগ্রাম।

অন্যান্য

এটি ওয়ালিওয়েস্টের জাভাস্ক্রিপ্ট অনুগ্রহের জন্য প্রতিযোগিতা করছে:

আমি প্রমাণ করতে পারি যে এই সীমাবদ্ধতার অধীনে সংখ্যাগুলি তৈরি করা যেতে পারে, স্ট্রিংগুলি পারে না। যেহেতু কোনও আক্ষরিক ব্যবহার করা যায় না, যেহেতু কোনও আক্ষরিক-বিল্ডিং চরিত্রের স্থাপন একটি খালি স্ট্রিং তৈরি করে:

""
''
``

তারপরে, কেবলমাত্র কিছু অপারেটর ব্যবহার করা যেতে পারে; কেবলমাত্র "যুক্ত" অপারেটরগুলি ব্যবহৃত হয়:

++ -- << >> ** ~~ || && !! ==

এবং এগুলির মধ্যে কোনও স্ট্রিংতে নম্বর / অন্যদের দিতে পারে না can সুতরাং কোনও স্ট্রিং আউটপুট করা যায় না।


অনুগ্রহটি 5 দিনের মধ্যে শেষ হয়, @ কনরওব্রায়ান, আশা করি আপনি অপেক্ষা করতে আপত্তি করবেন না! তবে অনুগ্রহ তোমার।
ওয়েলওয়েস্ট

2

অ্যালিস , 74 বাইট

aa00tt,,JJ""DDoo  nnoott  rreeppeeaatt  yyoouurrsseellff!!//@@""ooYY;;tt


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

ব্যাখ্যা

প্রথম ধরাটি হ'ল আমাদের স্ট্রিংটিতে প্রবেশ করতে সক্ষম হওয়া দরকার, তাই আমরা কেবল প্রথমটি এড়িয়ে যেতে চাই "। আমরা প্রথমটিতে ঝাঁপিয়ে পড়ে এটি করি "কারণ এরপরে আইপি বর্তমান কক্ষটি আবার দেখার আগে একটি ঘর সরিয়ে নিয়ে যাবে, যাতে এটি দ্বিতীয় "যা স্ট্রিং মোডে প্রবেশ করে। তবে সেখানে লাফিয়ে উঠতে সক্ষম 10, 0হতে আমাদের স্ট্যাকের উপরে, সেই ক্রমে (দ্বিতীয়, শীর্ষ) প্রয়োজন। এটি দিয়ে করা হয় aa00tt,,:

                          Stack:
aa   Push two 10s.        [... 10 10]
00   Push two 0s.         [... 10 10 0 0]
tt   Decrement twice.     [... 10 10 0 -2]
,    Rotate(-2).          [... 0 10 10]
,    Rotate(10).          [... 0 10 0]

এই ঘূর্ণন ফাংশন একটি আর্গুমেন্ট পপ। যদি সেই যুক্তিটি নেতিবাচক হয় তবে এটি স্ট্যাকের শীর্ষে থাকা মানটিকে অনেকগুলি অবস্থানের দ্বারা ঠেলে দেয়। যদি যুক্তিটি ইতিবাচক হয় তবে এটি এমন উপাদানটির সন্ধান করে যা উপরের অনেকগুলি অবস্থানের নীচে এবং শীর্ষে টান দেয়। নোট করুন যে ক্ষেত্রে Rotate(10), স্ট্যাকের জন্য পর্যাপ্ত উপাদান নেই, তবে নীচে একটি অন্তর্নিহিত অসীম পরিমাণ রয়েছে, এ কারণেই শূন্যের উপরে রয়েছে।

এখন আমরা এই দুটি টি আর্গুমেন্ট ব্যবহার Jকরে প্রথমটিতে আম্প করতে পারি "। দ্বিতীয় "স্ট্রিং মোডে প্রবেশ করে এবং সেগুলি সমস্ত রেকর্ড করে DDoo nnoott...। যখন এটি হিট হয় /, আইপিটি দক্ষিণ-পূর্ব দিকে পুনর্নির্দেশিত হয় এবং আমরা অর্ডিনাল মোডে প্রবেশ করি। আপাতত তিনটি লাইন ধরে আইপি উপরে ও নিচে উঠে আসে (যার মধ্যে দুটি খালি), সুতরাং এটি প্রথমে দুটি এবং তিন লাইনে আরও তিনটি স্পেস রেকর্ড করে এবং তারপরে হিট করার পরে আমরা স্ট্রিং মোডটি ছেড়ে চলে যাই "। যেহেতু আমরা এই মুহুর্তে অর্ডিনাল মোডে রয়েছি, সমস্ত রেকর্ডকৃত অক্ষরগুলি স্ট্যাকের জন্য একক স্ট্রিং হিসাবে ঠেলাঠেলি করা হয়েছে (যদিও আমরা তাদের বেশিরভাগ কার্ডিনাল মোডে রেকর্ড করেছি), তাই আমরা এই স্ট্রিংটি শেষ করি (পিছনের স্থানগুলি নোট করুন) :

DDoo  nnoott  rreeppeeaatt  yyoouurrsseellff!!   

এখন আইপি উপরে উঠতে থাকে এবং নিচে যার অর্থ এটি প্রতিটি অন্যান্য জুটির একটি কমান্ড কার্যকর করে, Yএবং এবং t। তারপরে আইপি দ্বিতীয় লাইনের গ্রিডের শেষ প্রান্তে আঘাত করবে এবং গ্রিডের মাধ্যমে পিছনের দিকে ঝাঁকুনি শুরু করবে। এই পরিবর্তন অক্ষরের যা জোড়ায় আইপি প্রথম লাইন হিট, তাই এটি এখন ফিরে যাচ্ছি executes ;, oএবং @। সুতরাং সমস্ত স্পেস এবং অন্তর্ভুক্ত আইপি পুনঃনির্দেশগুলি উপেক্ষা করে সম্পাদিত কোডটি Yt;o@অর্ডিনাল মোডে।

এটি Yহ'ল "আনজিপ" কমান্ড যা বিকল্প অবস্থানে অক্ষরের মধ্যে একটি স্ট্রিংকে পৃথক করে। যেহেতু প্রতিটি চরিত্র পুনরাবৃত্তি হয়েছে, এটি সত্যই কেবল আমাদের যে স্ট্রিংয়ের জন্য যাচ্ছি তার দুটি কপি দেয়, যদিও প্রথম অনুলিপিতে দুটি পেছনের স্থান রয়েছে এবং দ্বিতীয়টিতে একটি স্থানের স্থান রয়েছে। tসেই পিছনের স্থানটি বিভক্ত করে ;এড়িয়ে যায়। অবশেষে, oস্ট্রিংটি মুদ্রণ @করে প্রোগ্রামটি শেষ করে।


2

05AB1E , 100 58 52 বাইট

-6 বাইট কেভিন ক্রুইজসেনকে ধন্যবাদ

„„€€··™™……€€––  ……¹¹‚‚  ……––‚‚))εε##θθáá}}»»……!!θθJJ

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

„„€€·              # dictionary string "g do"
     ·             # double (no effect on strings)
      ™            # title case: "G Do"
       ™           # title case again (no effect)
……€€––             # dictionary string "tools not–"
                   # spaces necessary so "–…" isn't parsed as a dictionary word
……¹¹‚‚             # dictionary string "team repeat‚"
                   # spaces necessary again
……––‚‚             # dictionary string "j yourself‚"
)                  # wrap the entire stack in an array
 )                 # and again: [["G Do", "tools not–", "team repeat‚", "j yourself‚"]]
  ε        }       # for each:
   ε      }        #  for each:
    #              #   split on spaces: ["tools", "not–"]
     #             #   and again: [["tools", "not–"]]
      θ            #   get the last element: ["tools", "not–"]
       θ           #   and again: "not–"
        á          #   keep only letters: "not"
         á         #   and again (no effect)
            »      # join the list by newlines, joining sublists by spaces:
                   # "Do not repeat yourself"
             »     # join the stack by newlines, joining lists by spaces (no effect)
……!!               # literal string "…!!"
    θ              # get the last character: "!"
     θ             # and again (no effect)
      J            # join the stack without separators: "Do not repeat yourself!"
       J           # and again (no effect)
                   # implicit output

আদর্শের বিধি।


1
উত্তম উত্তর, আমি মুগ্ধ হয়েছি আপনি অভিধানের স্ট্রিংগুলিতে তার মতো চেপে ধরতে পেরেছিলেন! দুর্ভাগ্যক্রমে áএটি অভ্যন্তরীণ স্ট্রিংগুলিকে ভেক্টরাইজ করে না, অন্যথায় এটি ব্যবহারের পরে )).. অন্য সবগুলি মুছে ফেলা áএবং বিকল্প হিসাবে কাজ করার εεáá}}পরে ব্যবহার করা যেতে পারে )), তবে দুর্ভাগ্যক্রমে এটি কোনও বাইট সংরক্ষণ করে না (তবে সম্ভবত আপনি এটি থেকে অনুপ্রেরণা খুঁজে পেতে পারেন)? ) .. এবং কাজের „„!!পরিবর্তে ……!!পাশাপাশি, যেহেতু !বিল্টিনগুলি স্ট্রিংগুলি একই সাথে ছেড়ে দেয়। আহ ভাল, আমি চেষ্টা করেছি। এক্সডি
কেভিন ক্রুইজসেন

1
@ কেভিন ক্রুজসেন আমি ##θθááকিছুক্ষণের জন্য পুনরাবৃত্তিকারীদের রিফ্যাক্টর চেষ্টা করছিলাম , এবং কোনও কারণে আমি বিবেচনা করি নি εε}}... চেষ্টা করেছি €€, যা বেশ কার্যকর হয় না ... এটি এখন সংক্ষিপ্ত উত্তর, ধন্যবাদ!
গ্রিমি

1

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

GG11hh::zzaapp..}}..""DDoo  nnoott  rreeppeeaatt  yyoouurrsseellff!!""

এটি চালান এবং এটি স্ট্যাক্সএল.এক্সজে ডিবাগ করুন!

স্ট্যাক্স খুব সৌভাগ্যক্রমে ::প্রতি-নবম জন্য বিল্টিন রয়েছে । স্ট্রিংকে দ্বিগুণ করা, 2 চাপুন এবং চালানো দরকার আমাকে ::। সহজ, তাই না?

ভুল।

সেই স্ট্রিংটি পুশ করা কঠিন। প্রথম উদ্ধৃতি চিহ্নটি দ্বিগুণ করা যেতে পারে ..""যা একটি দৈর্ঘ্য -2 আক্ষরিক যার ."পরে অর্থবহ উদ্ধৃতি চিহ্ন রয়েছে। সমস্যাটি হ'ল, আমি কোনও নতুনটি শুরু না করেই স্ট্রিংটি শেষ করার কোনও উপায় দেখছি না (যা প্রয়োজনীয়, অন্যথায় দ্বিগুণ সংস্করণটি মুদ্রিত হবে)।

প্রোগ্রামের শেষে স্ট্রিং লিটারেলস সমাপ্ত হয়। আমি যদি এই দ্বিগুণ আক্ষরিক সেখানে রাখতে পারি, সম্ভবত একটি দুর্দান্ত কাজ হবে। কোনও প্রোগ্রামের শেষে থেকে কোথাও ঝাঁপিয়ে পড়ার জন্য অবশ্য প্রয়োজন G}, তাই সর্বনিম্ন, আমি এটি দেখছি:

GG [deduplicate] }}""DDoo  nnoott  rreeppeeaatt  yyoouurrsseellff!!""

এই ... কিছুই না। Gকোনও ব্লক শুরু করে না, সুতরাং দ্বিতীয়টিতেও লাফ দেবে না }। আবার, আমি একটি অক্ষর উপেক্ষা করার প্রয়োজন: ..}}। এক্সিকিউশন প্রথম Gথেকে দ্বিতীয়টিতে }লাফ দেয়, শেষ অবধি চলে যায়, দ্বিতীয়টিতে ফিরে আসে Gএবং সেখান থেকে দ্বিতীয়টিতে যায় এবং স্ট্যাকের উপরের দ্বিগুণ স্ট্রিংয়ের সাথে বিভাগের }শুরুতে পুনরায় শুরু হওয়ার আগে আরও একবারে অবিরত থাকে [deduplicate]

হস্তান্তর সহজ। 11hhএগারোটি ধাক্কা দিয়ে দু'বার অর্ধেক করে দুটি বার উপার্জন করে এবং ::তারপরে আমাদের প্রয়োজনীয় আউটপুটটি পেয়ে যাবে will

GG11hh::..}}..""DDoo  nnoott  rreeppeeaatt  yyoouurrsseellff!!""

আহ ওহ. এটি কিছুই প্রিন্ট করে না এখানে দুটি সমস্যা রয়েছে: প্রথমত, এর ..}অর্থ .}প্রোগ্রামটির শেষে স্ট্রিংটি স্ট্যাকের শীর্ষে থাকবে এবং দ্বিতীয়ত, স্ট্যাকসের সাধারণ অন্তর্নিহিত আউটপুট এখন অক্ষম!

সবচেয়ে খারাপ সমস্যা আউটপুট। যখন কোনও স্ট্যাক্স প্রোগ্রাম কোনও প্রিন্ট না করে করুণভাবে শেষ করে, স্ট্যাকের শীর্ষটি স্পষ্টভাবে মুদ্রিত হবে। কিন্তু আমরা কিছু ছাপাই নি ...? আহ, তবে আমাদের আছে। নিরবচ্ছিন্ন স্ট্রিং লিটারালগুলি ধাক্কা দেওয়ার পরিবর্তে মুদ্রিত হয় এবং খালি "থাকা সত্ত্বেও এই দুটি খালি স্ট্রিং ( শেষের সাথে মিল নেই ), এই চেকটি ভ্রমণের জন্য যথেষ্ট। যেকোন মুদ্রণ অবশ্যই হাত দ্বারা করা উচিত।

আমাদের প্রয়োজন হয় ppবা প্রয়োজন হবে PPএবং এই পরিস্থিতিতে প্রথমটি উপেক্ষা ..ppকরা অগ্রহণযোগ্য, কারণ এটি স্ট্রিংটি মুদ্রণ করবে .p। এর অর্থ হল আমাদের কাঙ্ক্ষিত আউটপুটটি খালি স্ট্রিংয়ের সাথে স্ট্যাকের উপরের বা শীর্ষ দুটিতে প্রয়োজন need এই দ্বিতীয়টি দুটি খালি স্ট্রিং ( zz) চাপিয়ে এবং শীর্ষ তিনটি আইটেমটি দু'বার aaমুদ্রণের আগে ঘোরানোর মাধ্যমে সম্পন্ন হয় ।

এটি শেষ হয়ে গেলে, আমাদের চারটি স্ট্রিং লম্বা রয়েছে ack একটি পঞ্চম, .}প্রোগ্রামটি সান্ধ্যভাবে প্রস্থান করার আগে ধাক্কা দেওয়া হয়; এই মুহুর্তে, নিখুঁত আউটপুটটির অভাব একটি আশীর্বাদ হিসাবে এবং অভিশাপে পরিণত হয়, কারণ অতিরিক্ত কোনও কিছুই এখন মুদ্রিত হবে না!

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