নীল হাঁস, লাল হাঁস, ধূসর হাঁস


48

সুতরাং, গত সপ্তাহে আমি হাঁস, হাঁস, গোজ খেলতে একটি চ্যালেঞ্জ পোস্ট করেছি । এর ফলে বেশ কয়েকটি মিনেসোটান তাদের আঞ্চলিক 'ধূসর হাঁস' প্রকরণ সম্পর্কে মন্তব্য করে ।

সুতরাং এখানে বিধিগুলি রয়েছে:

রঙের এই তালিকাটি ব্যবহার করে:

Red
Orange
Yellow
Green
Blue
Indigo
Violet
Gray

এই নিয়মগুলি অনুসরণ করতে একটি প্রোগ্রাম লিখুন:

  1. এর মধ্যে একটি রঙ নির্বাচন করুন এবং এটিকে 'হাঁস' শব্দের সাথে যুক্ত করুন এবং ফলাফলটি একটি নতুন লাইনে মুদ্রণ করুন।
  2. রঙ যদি 'গ্রে' না হয় তবে ধাপ 1 পুনরাবৃত্তি করুন।
  3. রঙটি যদি 'গ্রে' হয় তবে আপনার প্রোগ্রামটি শেষ করুন।

যে বিধিগুলি অনুসরণ করা আবশ্যক:

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

উদাহরণ আউটপুট:

Green duck
Orange duck
Yellow duck
Indigo duck
Yellow duck 
Gray duck

প্রথমে আমাকে এই বৈচিত্রটি সম্পর্কে সতর্ক করার জন্য @ মাইক হিলকে ধন্যবাদ


ফলাফল বিতরণ উপর কোন নিয়ম? কারণ আমি নন-ধূসর রঙ থেকে এলোমেলো সময় বার করে বাছাই করে বৈধ আউটপুট তৈরি করতে পারতাম, তারপরে Greyএকবার মুদ্রণ করা হত (সুতরাং আমাকে সেগুলি থেকে বাছাই করতে হবে এবং আমি বাছাই করেছি কিনা তা পরীক্ষা করতে হবে না Grey)।
মার্টিন ইন্ডার

পছন্দ করুন "রঙগুলি ধারাবাহিকভাবে একই ক্রমে থাকা উচিত নয়" " গুরুত্বপূর্ণ, তবে শেষে ধূসর বাছাই বন্ধ করার মতো কিছুই নেই।
এজেফারাডে

3
বিকল্প বানান "ধূসর" অনুমোদিত?
12Me21

@ 12Me21 কৌতূহলী, থো। এর কোন প্রযুক্তিগত কারণ আছে কি? নাকি শুধুই কোনও নান্দনিক?
এজেফারাডে

2
আমার বিনীত-মতামত অনুসারে, আপনি একটি অত্যন্ত গুরুত্বপূর্ণ হাঁসের রঙ মিস করছেন। নীল কাছাকাছি, তবে যথেষ্ট সুনির্দিষ্ট নয়।
কোবাল্টডাক্ক

উত্তর:


6

05 এ বি 1 ই , 42 40 বাইট

এরিক দ্য আউটগল্ফারকে ধন্যবাদ 2 বাইট সংরক্ষণ করা

[“ëßigo°¯†¾›ÈŠÛˆ¨‡—°Íolet“#7ÝΩ©è'Мðý,®#

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


3
আমি এই অনেক অপঠনযোগ্য গল্ফিং ভাষা লক্ষ্য করেছি। আরও কিছু মানব-পঠনযোগ্য ফর্ম থেকে একটি সংকলক আছে?
এজেফারাডে

@ এজেফারাডে: আমি সচেতন তা নয়। আমি জানি যে কেবল গল্ফিংয়ের ভাষা যার মধ্যে একটি রয়েছে চারকোল।
এমিগনা

1
আপনি আপনার স্ট্রিং আরও সঙ্কুচিত করতে পারেন, indহয় ëß!
এরিক আউটগল্ফার

1
জিএস 2 এর একটিও রয়েছে। কিন্তু আজকাল সে ভাষা তেমন ব্যবহার হয় না।
পুনরাবৃত্তির


46

লুয়াএলটেক্স, 220 211 টি অক্ষর

কমান্ড প্রয়োগ করুন:

lualatex -interaction nonstopmode

সবচেয়ে সংক্ষিপ্ত নয়, কল্পিত। @ দক্ষতার সমাধানের ভিত্তিতে

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

\RequirePackage{tikzducks}\newcount\b\let~\def~\0{red}~\1{orange}~\2{yellow}~\3{green}~\4{blue}~\5{cyan}~\6{violet}~\7{gray}\loop\b\uniformdeviate8\tikz\duck[body=\csname\the\b\endcsname]; \ifnum\b<7\repeat\stop

9
শুভ স্বর্গ! এটি কেবল সেরা জিনিস! আপনি আমার দিনটি তৈরি করেছেন, অ্যালেক্স।
এজেফারাডে

@ এজেফারাডে tikzducksসেখানে ব্যবহার করার জন্য সত্যই বিস্ময়কর ধারণা :)
স্কিলমন

6
এত দীর্ঘ প্যাকেজের নাম চয়ন করার জন্য +1 এবং আমার ক্ষমা!

@ স্যাম, আপনি আমার
বিলোপ পান

8
হ্যালো মিস্টার. আমি অবশ্যই টেকএক্স.এসএক্স এর মতো অন্যান্য প্রযুক্তিগত সম্প্রদায়ের কাছ থেকে জানি না । যেহেতু এই উত্তর পরিবারে কিছু পাখি জুড়ে Anatidae , আমি এটা upvoting দ্বারা অনুমোদনের একটি টোকেন প্রদান করতে বাধ্য। :)
পাওলো সেরেদা

26

6502 মেশিন কোড (সি 64), 124 বাইট

00 C0 AD 12 D0 85 02 A2 17 8E 18 D0 A5 02 F0 03 0A 90 02 49 1D 85 02 A8 CA 10
02 A2 2F BD 42 C0 D0 F6 88 D0 F3 86 FB E8 BD 42 C0 F0 06 20 16 E7 E8 D0 F5 AA
BD 73 C0 F0 06 20 16 E7 E8 D0 F5 A6 FB D0 C9 60 00 C7 52 45 59 00 D2 45 44 00
CF 52 41 4E 47 45 00 D9 45 4C 4C 4F 57 00 C7 52 45 45 4E 00 C2 4C 55 45 00 C9
4E 44 49 47 4F 00 D6 49 4F 4C 45 54 00 20 44 55 43 4B 0D 00

অনলাইন ডেমো - ব্যবহার:SYS49152

স্ক্রিনশট


ব্যাখ্যা (মন্তব্য বিচ্ছিন্ন):

         00 C0       .WORD $C000        ; load address
.C:c000  AD 12 D0    LDA $D012          ; current rasterline as seed
.C:c003  85 02       STA $02            ; to "random" value
.C:c005  A2 17       LDX #$17           ; cfg for upper/lower, also use as
.C:c007  8E 18 D0    STX $D018          ;    initial index into colors array
.C:c00a   .loop:
.C:c00a  A5 02       LDA $02            ; load current random val
.C:c00c  F0 03       BEQ .doEor         ; zero -> feedback
.C:c00e  0A          ASL A              ; shift left
.C:c00f  90 02       BCC .noEor         ; bit was shifted out -> no feedback
.C:c011   .doEor:
.C:c011  49 1D       EOR #$1D
.C:c013   .noEor:
.C:c013  85 02       STA $02            ; store new random val
.C:c015  A8          TAY                ; use as counter for next color string
.C:c016   .findloop:
.C:c016  CA          DEX                ; next char pos in colors (backwards)
.C:c017  10 02       BPL .xok           ; if negative ...
.C:c019  A2 2F       LDX #$2F           ;    load length of colors - 1
.C:c01b   .xok:
.C:c01b  BD 42 C0    LDA .colors,X      ; load character from colors
.C:c01e  D0 F6       BNE .findloop      ; not zero, try next character
.C:c020  88          DEY                ; decrement random counter
.C:c021  D0 F3       BNE .findloop      ; not zero, continue searching
.C:c023  86 FB       STX $FB            ; save character position
.C:c025  E8          INX                ; increment to start of color
.C:c026   .outloop:
.C:c026  BD 42 C0    LDA .colors,X      ; output loop for color string
.C:c029  F0 06       BEQ .duckout
.C:c02b  20 16 E7    JSR $E716
.C:c02e  E8          INX
.C:c02f  D0 F5       BNE .outloop
.C:c031   .duckout:
.C:c031  AA          TAX                ; A is now 0, use as char pos for duck
.C:c032   .duckoutloop:
.C:c032  BD 73 C0    LDA .duck,X        ; output loop for duck string
.C:c035  F0 06       BEQ .outdone
.C:c037  20 16 E7    JSR $E716
.C:c03a  E8          INX
.C:c03b  D0 F5       BNE .duckoutloop
.C:c03d   .outdone:
.C:c03d  A6 FB       LDX $FB            ; load saved character position
.C:c03f  D0 C9       BNE .loop          ; not zero -> continue main loop
.C:c041  60          RTS                ; zero was start of "Grey" -> done
.C:c042   .colors:
.C:c042  00 c7 52 45    .BYTE 0, "Gre"
.C:c046  59 00 d2 45    .BYTE "y", 0, "Re"
.C:c04a  44 00 cf 52    .BYTE "d", 0, "Or"
.C:c04e  41 4e 47 45    .BYTE "ange"
.C:c052  00 d9 45 4c    .BYTE 0, "Yel"
.C:c056  4c 4f 57 00    .BYTE "low", 0
.C:c05a  c7 52 45 45    .BYTE "Gree"
.C:c05e  4e 00 c2 4c    .BYTE "n", 0, "Bl"
.C:c062  55 45 00 c9    .BYTE "ue", 0, "I"
.C:c066  4e 44 49 47    .BYTE "ndig"
.C:c06a  4f 00 d6 49    .BYTE "o", 0, "Vi"
.C:c06e  4f 4c 45 54    .BYTE "olet"
.C:c072  00             .BYTE 0
.C:c073   .duck:
.C:c073  20 44 55 43    .BYTE " duc"
.C:c077  4b 0d 00       .BYTE "k", $d, 0

আমি দুঃখিত, আপনার ডেমো কোনও হাঁসের সাথে সম্পর্কিত সামগ্রী আউটপুট বলে মনে হচ্ছে না।
এজেফারাডে

1
@ এজেফারাডে দয়া করে "ব্যবহার" অংশটি লক্ষ্য করুন ... এটি চালানোর আদেশটি sys 49152
ফেলিক্স Palmen

ঠিক আছে,
সেটাই

1
সেটি অসাধারণ ছিল. আমি c64 বিধানসভা লিখেছি কিছুক্ষণ হয়েছে।
এলএসডি

2
@ এলএসডি: একই এখানে! আমার প্রথম প্রোগ্রামটি একটি সি 64 এ 6502 সমাবেশ ছিল, কারণ আমি সবে পেয়েছি এবং একটি বন্ধু আমাকে "একটি খেলা লিখুন!" একটি টাস্ক সহ 6502 বইটি দিয়েছিলেন! আমাকে কিছু লেখার জন্য jumsptart! (দুর্দান্ত উপায়! এটি কেবল পড়তে না পেরে আসলে কিছু লিখার জন্য দুর্দান্ত প্রেরণা ছিল)। একটি 192 বাইট (iirc) "স্নেক" প্রোগ্রাম লিখেছিল (একটি, ইমো, চতুর ডাবল সূচকটি মাথা এবং সাপের অবস্থানের লেজের দিকে নির্দেশ করে) ... প্রথম চেষ্টা করুন: এটি নীচের প্রান্তটি পেরিয়ে জুম করে 'খাওয়া' হয়েছিল বাকী র‌্যাম, যে কোনও "@" তে বাড়তে থাকায় আমি দেওয়ালগুলি স্থাপন করতে ভুলে গিয়েছি ^^
অলিভিয়ার ডুলাক


10

ট্যাক্সি , 1995 বাইট

Go to Heisenberg's:w 1 r 3 r 1 l.[a]Pickup a passenger going to Divide and Conquer.8 is waiting at Starchild Numerology.8 is waiting at Starchild Numerology.Go to Starchild Numerology:n 1 l 3 l 1 l 3 l.Pickup a passenger going to Divide and Conquer.Pickup a passenger going to Multiplication Station.Go to Divide and Conquer:w 1 r 3 r 1 r 2 r 1 r.Pickup a passenger going to Cyclone.Go to Cyclone:e 1 l 1 l 2 l.Pickup a passenger going to What's The Difference.Pickup a passenger going to Trunkers.Go to Zoom Zoom:n.Go to Trunkers:w 3 l.Pickup a passenger going to What's The Difference.Go to What's The Difference:w 2 r 1 l.Pickup a passenger going to Multiplication Station.1 is waiting at Starchild Numerology.Go to Starchild Numerology:e 1 r 1 l 3 l.Pickup a passenger going to Addition Alley.Go to Multiplication Station:w 1 r 2 r 1 r 4 l.Pickup a passenger going to Addition Alley.Go to Addition Alley:n 2 l 1 r 3 l 1 l.Pickup a passenger going to The Underground.'Red duck\n' is waiting at Writer's Depot.'Orange duck\n' is waiting at Writer's Depot.'Yellow duck\n' is waiting at Writer's Depot.'Green duck\n' is waiting at Writer's Depot.'Blue duck\n' is waiting at Writer's Depot.'Indigo duck\n' is waiting at Writer's Depot.'Violet duck\n' is waiting at Writer's Depot.'Grey duck' is waiting at Writer's Depot.Go to Writer's Depot:n 1 l 1 l.[b]Pickup a passenger going to Narrow Path Park.Go to Narrow Path Park:n 3 r 1 l 1 r.Go to The Underground:e 1 r.Switch to plan "c" if no one is waiting.Pickup a passenger going to The Underground.Go to Writer's Depot:s 2 r 1 l 2 l.Switch to plan "b".[c]Go to Narrow Path Park:n 4 l.Pickup a passenger going to Post Office.Go to Post Office:e 1 r 4 r 1 l.Go to Writer's Depot:s 1 r 1 l 2 l.Switch to plan "a" if no one is waiting.[d]Pickup a passenger going to Sunny Skies Park.Go to Sunny Skies Park:n 2 r.Go to Writer's Depot:n 1 l.Switch to plan "e" if no one is waiting.Switch to plan "d".[e]Go to Heisenberg's:n 3 r 3 r.Switch to plan "a".

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

আমি মনে করি এটি লক্ষণীয় যে এই কোডটির 47% কেবল 1 থেকে 8 পর্যন্ত র্যান্ডম পূর্ণসংখ্যার বাছাই করছে
Also এছাড়াও, ট্যাক্সিটি এতটাই ভার্চুয়াল যে এটি duck\nপরে প্রতিটি রঙের পরে একে যুক্তিযুক্ত করার চেয়ে হার্ড কোডের চেয়ে ছোট is
এখানে আন-গল্ফ করা সংস্করণটি রয়েছে:

Go to Heisenberg's: west 1st right 3rd right 1st left.

[Pick up a random INT 1-8 going to The Underground]
[a]
Pickup a passenger going to Divide and Conquer.
8 is waiting at Starchild Numerology.
8 is waiting at Starchild Numerology.
Go to Starchild Numerology: north 1st left 3rd left 1st left 3rd left.
Pickup a passenger going to Divide and Conquer.
Pickup a passenger going to Multiplication Station.
Go to Divide and Conquer: west 1st right 3rd right 1st right 2nd right 1st right.
Pickup a passenger going to Cyclone.
Go to Cyclone: east 1st left 1st left 2nd left.
Pickup a passenger going to What's The Difference.
Pickup a passenger going to Trunkers.
Go to Zoom Zoom: north.
Go to Trunkers: west 3rd left.
Pickup a passenger going to What's The Difference.
Go to What's The Difference: west 2nd right 1st left.
Pickup a passenger going to Multiplication Station.
1 is waiting at Starchild Numerology.
Go to Starchild Numerology: east 1st right 1st left 3rd left.
Pickup a passenger going to Addition Alley.
Go to Multiplication Station: west 1st right 2nd right 1st right 4th left.
Pickup a passenger going to Addition Alley.
Go to Addition Alley: north 2nd left 1st right 3rd left 1st left.
Pickup a passenger going to The Underground.

[Use the random INT to select a color]
'Red duck\n' is waiting at Writer's Depot.
'Orange duck\n' is waiting at Writer's Depot.
'Yellow duck\n' is waiting at Writer's Depot.
'Green duck\n' is waiting at Writer's Depot.
'Blue duck\n' is waiting at Writer's Depot.
'Indigo duck\n' is waiting at Writer's Depot.
'Violet duck\n' is waiting at Writer's Depot.
'Grey duck' is waiting at Writer's Depot.
Go to Writer's Depot: north 1st left 1st left.
[b]
Pickup a passenger going to Narrow Path Park.
Go to Narrow Path Park: north 3rd right 1st left 1st right.
Go to The Underground: east 1st right.
Switch to plan "c" if no one is waiting.
Pickup a passenger going to The Underground.
Go to Writer's Depot: south 2nd right 1st left 2nd left.
Switch to plan "b".

[Output the selected color]
[c]
Go to Narrow Path Park: north 4th left.
Pickup a passenger going to Post Office.
Go to Post Office: east 1st right 4th right 1st left.

[If the color was grey, exit by error]
Go to Writer's Depot: south 1st right 1st left 2nd left.
Switch to plan "a" if no one is waiting.

[Get rid of the rest of the colors]
[You could throw them off a bridge but you won't get paid]
[d]
Pickup a passenger going to Sunny Skies Park.
Go to Sunny Skies Park: north 2nd right.
Go to Writer's Depot: north 1st left.
Switch to plan "e" if no one is waiting.
Switch to plan "d".

[Start over from the beginning]
[e]
Go to Heisenberg's: north 3rd right 3rd right.
Switch to plan "a".

পড়তে মজা লাগছিল।
মাকোটোসান

গলি, এটাই মজাদার! এটি কীভাবে কাজ করে তা আমি বুঝতে শুরু করতে পারি না। প্রচুর মজা,
যদিও


8

জাভা (ওপেনজেডকে 9) , 133 বাইট

v->{for(int x=9;x>0;)System.out.println("Grey,Red,Orange,Yellow,Green,Blue,Indigo,Violet".split(",")[x+=Math.random()*8-x]+" duck");}

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

ব্যাখ্যা

v->{                              // Void-accepting void lambda function
  for(int x=9;x>0;)               //  Loop until x is zero
    System.out.println(           //   Print...
        "Grey,Red,Orange,         //       colors, "Grey" first
         Yellow,Green,Blue,       //          more colors
         Indigo,Violet"           //          more colors
        .split(",")               //       as an array
          [x+=Math.random()*8-x]  //       pick one randomly, use implicit double to int cast with "x+=<double>-x" trick
        +" duck");                //      Oh, and append " duck" to the color.
}

8

রুবি , 93 91 90 89 87 86 85 বাইট

2 বাইট সংরক্ষণের জন্য ডম হেস্টিংসকে ধন্যবাদ , ক্যারিল এল। 1 বাইট এবং অসোন তুহিদ 1 বাইট!

puts %w(Red Orange Yellow Green Blue Indigo Violet Grey)[$.=rand(8)]+" duck"while$.<7

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


আপনি কোডটির ()চারপাশে সরিয়ে ফেলতে পারেন এবং যদি আপনি সূচকটি সংরক্ষণ করার $.পরিবর্তে ব্যবহার করেন তবে আপনি সম্পূর্ণরূপে sতৈরি এড়াতে পারবেন s(যেহেতু $.লাইন নম্বরটির প্রাক-সূচনা হয়!) Greyআপনাকে তালিকার শেষের দিকে যেতে হবে এবং $.<7তার পরিবর্তে পরীক্ষা করতে হবে যদিও। আশা করি এইটি কাজ করবে!
ডম হেস্টিংস

@ ডোমহাস্টিংস ধন্যবাদ! আমি পরিত্রাণ পেতে একটি উপায় খুঁজছিলাম s=1এবং $.নিখুঁত ছিল!
ক্রিশ্চিয়ান লুপাস্কু

আমি মনে করি আপনি কিছুক্ষণ পরে স্থানও সরিয়ে ফেলতে পারবেন, রুবি তার সম্পর্কে অভিযোগ করবে বলে মনে হয় না।
ক্যারিল এল

@KirillL। ঠিক আছে, ধন্যবাদ! আমার আগে ছিল while s...এবং জায়গা দরকার ছিল। পরিবর্তন করার পর এই সুযোগ কি লক্ষ্য করেনি sথেকে $.
ক্রিশ্চিয়ান লুপাস্কু


7

অপারেশন ফ্ল্যাশপয়েন্ট স্ক্রিপ্টিং ভাষা, 133 বাইট

f={s="";v=s;while{v!="grey"}do{v=["Red","Orange","Yellow","Green","Blue","Indigo","Violet","Grey"]select random 7;s=s+v+" duck\n"};s}

সাথে কল করুন:

hint call f

উদাহরণ আউটপুট:

প্রথমে আমি একরকমভাবে চ্যালেঞ্জটি ভুল করে লিখলাম যেন লক্ষ্যটি কেবল "ধূসর হাঁস" -লাইনে শেষ না হয়ে বিভিন্ন ধরণের লাইন আউটপুট করা। সেই ভুল ব্যাখ্যার পরে কোডটির কিছুটা আকর্ষণীয় অংশ তৈরি হয়েছিল:

f={s="";c=[1];c set[random 9,0];{s=s+(["Red","Orange","Yellow","Green","Blue","Indigo","Violet","Grey"]select random 7)+" duck\n"}count c;s}

7

পিডিএফটেক্স, 231 220 219 209 207 বাইট

\newcount\b\let~\def~\0{Red}~\1{Orange}~\2{Yellow}~\3{Green}~\4{Blue}~\5{Indigo}~\6{Violet}~\7{Gray}~\9{ }\newlinechar`z\loop\b\pdfuniformdeviate8\message{z\csname\the\b\endcsname\9duck}\ifnum\b<7\repeat\bye

লুয়াটেক্স, 216 206 204 বাইট

\newcount\b\let~\def~\0{Red}~\1{Orange}~\2{Yellow}~\3{Green}~\4{Blue}~\5{Indigo}~\6{Violet}~\7{Gray}~\9{ }\newlinechar`z\loop\b\uniformdeviate8\message{z\csname\the\b\endcsname\9duck}\ifnum\b<7\repeat\bye


5

রুবি , 84 81 বাইট

-৩ বাইটের জন্য ডম হেস্টিংসকে ধন্যবাদ।

puts$_=%w[Red Orange Yellow Green Blue Indigo Violet Grey].sample+" duck"until/y/

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


1
আপনি সংরক্ষণ তাহলে $_, আপনি শুধু থাকতে পারে until/y/জন্য শেষে -3!
ডম হেস্টিংস



4

অক্টাভা , 114 112 বাইট

do disp([strsplit('Red Orange Yellow Green Blue Indigo Violet'){i=randi(7)},' duck'])until i>6
disp('Grey duck')

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

112 থেকে 118 বাইটের মধ্যে বিভিন্ন বিকল্পের একটি গোছা রয়েছে ... কিছু শুরুতে একটি সূচক শুরু করে এবং প্রতিটি লুপের জন্য এলোমেলো সংখ্যার দ্বারা এটি হ্রাস করে এবং 0 না হওয়া পর্যন্ত অপেক্ষা করে । অন্যরা কিছু ব্রাকেট এড়াতে printfপরিবর্তে ব্যবহার dispকরে।


সামান্য প্রশ্ন: অষ্টাভেতে এমন কোনও প্রতীক রয়েছে যা & এক্সেলের মতো করে, কারণ আমি মনে করি তখনও কোডটি আরও ছোট করা সম্ভব।
মিচথান

1
দুর্ভাগ্যবশত, না ... স্ট্রিংস বর্গাকার বন্ধনী (অথবা যেমন ফাংশন ব্যবহার করে ভিতরে ঘনিভূত করা আবশ্যক catএবং horzcatধন্যবাদ যদিও :)।
Stewie গ্রিফিন

4

পিএইচপি , 133 125 111 108 97 92 বাইট

<?for(;$b=[Red,Orange,Yellow,Green,Blue,Indigo,Violet][rand(0,7)];)echo"$b duck
"?>Grey duck

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

-8 বাইটস @ অলিভার গ্রাওগায়ারকে ধন্যবাদ

-3 বাইটস @ মান্যাটওয়ার্ককে ধন্যবাদ

-ডম হেস্টিংসকে -11 বাইটস ধন্যবাদ জানায়


2
রঙ STRING এবং পরীক্ষা, পরিবর্তন Greyকরার জন্য X, যেহেতু এটি ব্যবহার করা হয় না। আপনি 6 বাইট পাবেন।
অলিভিয়ার গ্রাগোয়ার

@ অলিভিয়ারগ্রোওরে ওহ সত্য। তার জন্য ধন্যবাদ :)
ডেভিড

1
বিপরীত forকোন প্রথম বন্ধনী প্রয়োজন 'র অবস্থা: x!=$b=$a[array_rand($a)]। বিটিডাব্লু, ?>একটি বিবৃতি সমাপ্ত করে, ;সামনে এটির দরকার নেই ।
manatwork

@ মনটওয়ার্ক ওহ, সুন্দর! আমি এখন আমার উত্তর আপডেট করব!
ডেভিড

2
আপনি একেবারে অন্তর্ভুক্ত না xকরে $b=$a..এবং শর্ত হিসাবে ব্যবহার rand(0,7)না করে এবং এর পরিবর্তে আরও কয়েকটি বাইট সংরক্ষণ করতে পারেন array_rand। আপনি ?>এবং এর Grey duckমধ্যেও নতুন লাইনটি সরাতে পারেন । এছাড়াও আপনার টিআইও লিঙ্কটিতে এখনও পুরো ট্যাগ ছিল, আপনি কাজ করতে -d short_open_tag=onপতাকাগুলিতে যুক্ত করতে পারেন ! :)
ডম হেস্টিংস


4

ব্যাশ, 96 বাইট

a=(Grey Red Orange Yellow Green Blue Indigo Violet);for((i=1;i;));{ echo ${a[i=RANDOM%8]} duck;}

ধন্যবাদ @ ডিজিটাল ট্রামুমাকে।


এটি গল্ফ করার জন্য প্রচুর সুযোগ - ব্যাশ গল্ফিং টিপসটি দেখুন
ডিজিটাল ট্রমা

@ ডিজিটালট্রামা আমি খুব তাড়াহুড়া করেছিলাম, তবে আমি জিএনইউ কোর্টিল / ডাব্লু / না কোনও খাঁটি বাশ সমাধান চাইছিলাম। আমি এটিকে 112 থেকে 105 বাইটে সঙ্কুচিত করতে পারি।
রেক্সকোগিটানস

হ্যাঁ, আমি খাঁটি-বাশ উত্তরগুলিও পছন্দ করি। এখানে আরও 10 বাইট বন্ধ রয়েছে
ডিজিটাল ট্রমা

আমি ছিনতাই করি >0, তবে আমি এর ${#a}পরিবর্তে চলে গেলাম 8
রেক্সকোটিটানস

${#a}পরিবর্তে আপনার রাখা দরকার কেন 8? এটি কোড-গল্ফ - বিভিন্ন সংখ্যক রঙের জন্য আপনার কোডকে সাধারণকরণের পরিবর্তন করার প্রয়োজন নেই। আপনাকে যা করতে হবে তা হ'ল বাইটের স্বল্পতম সংখ্যায় অনুমানটি পূরণ করা।
ডিজিটাল ট্রমা

3

জাভাস্ক্রিপ্ট, 104 বাইট

f=_=>`grey,red,orange,yellow,green,blue,indigo,violet`.split`,`[n=Math.random()*8|0]+` duck
${n?f():``}`

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


1
এফডাব্লুআইডাব্লু, আমার এই বৈকল্পিকটি ছিল তবে আমি 104 বাইটে আটকে আছি।
আর্নল্ড

লজ্জা আমরা new Dateএখানে আরএনজির জন্য ব্যবহার করতে পারি না ।
শেগি

3

এডাব্লুকে , 114 বাইট

{srand();for(split("Red9Orange9Yellow9Green9Blue9Indigo9Violet9Grey",A,9);r<8;print A[r]" duck")r=int(8*rand()+1)}

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

ব্যাখ্যা

{srand();                  # Seed rand to obtain different sequence each run
for(
     split("Red9Orange9Yellow9Green9Blue9Indigo9Violet9Grey",
            A,9);          # Split on 9 to avoid using '"'s
     r<8;
     print A[r]" duck")    # Print the colored ducks
     r=int(8*rand()+1)     # AWK uses 1-indexing not 0-indexing when splitting strings into arrays
}

মনে রাখবেন যে এর জন্য "কিছু" ইনপুট দরকার। ইনপুট খালি থাকতে পারে। ইনপুট জন্য প্রয়োজনীয়তা এড়াতে প্রথম লাইন সঙ্গে preendBEGIN


3

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

for(;$r-ne'Grey'){$r=-split"Red
Orange
Yellow
Green
Blue
Indigo
Violet
Grey"|Random;"$r Duck"}

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

$rসমান হওয়া পর্যন্ত লুপগুলি Grey। লুপের অভ্যন্তরে, -splitনিউলাইনগুলিতে আক্ষরিক স্ট্রিং এর একটি বেছে নেয়, Randomতার পরে রঙটি প্রিন্ট করে Duck(প্রযুক্তিগতভাবে, এটি পাইপলাইন এবং পরবর্তী লুপ পুনরাবৃত্তির উপর পাইপলাইন ক্লিনআপের কারণে Write-Outputঘটে থাকে)। মনে রাখবেন যে তাত্ত্বিকভাবে Greyকখনই বেছে নেওয়া যায় না এবং লুপটি অসীমভাবে চালিয়ে যেতে পারে তবে এটি প্রায় কখনও হয় না (সম্ভাবনার দিক থেকে) এটি ঘটবে না।


3

আর , 101 বাইট

cat(paste(c(sample(scan(,""),rexp(1),T),"gray"),"duck\n"))
Red
Orange
Yellow
Green
Blue
Indigo
Violet

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

সম্পর্কিত চ্যালেঞ্জের জন্য @ ব্যবহারকারী 2390246 এর উত্তর থেকে ভারী অনুপ্রাণিত । আমাদের এলোমেলোতার দুটি উত্স দরকার: রঙের ক্রম পরিবর্তন করা এবং ধূসর-বাদামি রঙের নমুনা। sampleর্যান্ডম আকার হার প্যারামিটার সহ একটি সূচকীয় বণ্টনের কর্তৃক প্রদত্ত একটি র্যান্ডম নমুনা নিতে হবে 1, একটি পূর্ণসংখ্যা থেকে ছেঁটে ফেলা হয়েছে। একটি সূচকীয় distrubtion ব্যবহার দুর্ভাগ্যবশত মানে একটি সম্ভাবনা আছে যে exp(-8)বা প্রায় 0.0003354 যে নমুনা হতে হবে কমপক্ষে 8, তাই আমরা সঙ্গে নমুনা আছে replace=T


আপনি তারপরে \n
মিকিটি

এছাড়াও আপনি ইত্যাদির colors()[c(26,254,498,552,640,652)]জায়গায় ব্যবহার করে কিছুটা সাশ্রয় করতে পারবেন scan(..)প্রায় 83-এ নেমে আসা উচিত
মিকিটি

@ মিকিটি ......... আমি আর-এর গ্রাফিকগুলি যথেষ্ট সুন্দর গ্রাফিক্সের মতো বিল্টইনগুলি মনে রাখার মতো ব্যবহার করি না colors()! এগুলি কিছু দুর্দান্ত গল্ফ, যা আমি মনে করি আপনার নিজের উত্তর হিসাবে পোস্ট করা উচিত, কারণ এটি রঙগুলি পাওয়ার কম মার্জিত উপায়।
জিউসেপ

ঠিক আছে, আমি এটি সামান্য কিছু পরিবর্তন নিয়ে পোস্ট করব
মিকটি

3

পাইথন 2 , 138 133 120 117 116 বাইট

import os
while id:id=ord(os.urandom(1))%8;print"Grey Red Orange Yellow Green Blue Indigo Violet".split()[id],'duck'

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

@ এরিকথ আউটগলফার এর কিছু ধারণার সাথে আরও ভাল। ধন্যবাদ!

@Ovs ধন্যবাদ সহ আরও 3

-১ টি নতুন কৌশল শিখার জন্য @ রডকে ধন্যবাদ দিয়ে :-)


3

রেটিনা , 69 68 বাইট

লিওকে 1 বাইট সংরক্ষণ করার জন্য ধন্যবাদ

.^/y/{K`Red¶Orange¶Yellow¶Green¶Blue¶Indigo¶Violet¶Grey
" duck¶">?G`

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

ব্যাখ্যা

./y/^{K`Red¶Orange¶Yellow¶Green¶Blue¶Indigo¶Violet¶Grey

.প্রোগ্রাম শেষে অন্তর্নির্মিত আউটপুট দমন (অন্যথায়, আমরা দুটি ধূসর হাঁস পেতে চাই)। /y/^{পুরো প্রোগ্রামটিকে একটি লুপে জড়িয়ে দেয় যা চলমান স্ট্রিং এ থাকে না ততক্ষণ চলতে থাকে y। সেই লাইনের বাকী অংশটি সমস্ত রঙের একটি লাইনফিড-বিচ্ছিন্ন তালিকায় কার্যকারী স্ট্রিং সেট করে।

" duck¶">G?`

আমরা কার্যকারী স্ট্রিং (এবং অতএব এলোমেলো রঙ) থেকে একটি এলোমেলো রেখা গ্রেপ করি। এবং আমরা ফলাফলটি একটি পিছনে duckএবং একটি লাইনফিড দিয়ে মুদ্রণ করি ।


3

এমএটিএল , 68 64 বাইট

`'DYCIXMSQ(qm#Q$4{#is,Gh1(=lAjUSId;&'F2Y232hZaYb8YrX)' duck'h7Mq

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

ব্যাখ্যা

`                         % Do...while
  'DYCI···Id;&'           %   Push this string (to be decompressed by base conversion)
  F                       %   Push false
  2Y2                     %   Push string 'abc...xyz'
  32                      %   Push 32 (ASCII for space)
  h                       %   Concatenate horizontally. Gives 'abc...xyz '
  Za                      %   Base-convert from alphabet of all printable ASCII
                          %   characters except single quote (represented by input
                          %   false) to alphabet 'abc...xyz '. Produces the string
                          %   'grey red ··· violet'
  Yb                      %   Split on space. Gives a cell array of strings
  8Yr                     %   Random integer from 1 to 8, say k
  X)                      %   Get the content of the k-th cell
  ' duck'                 %   Push this string
  h                       %   Concatenate horizontally
  7M                      %   Push k again
  q                       %   Subtract 1
                          % Implicit end. Run a new iteration if top of the stack
                          % is non-zero
                          % Implicit display

3

পাইথন 3, 130 , 128 , 127 , 126 , 125 বাইট

from random import*
d,c=1,'Grey Red Orange Yellow Green Blue Indigo Violet'.split()
while d!=c[0]:d=choice(c);print(d,'duck')

-1 @ এলপিড্রো দ্বারা!
-1 আমার দ্বারা
-1 @ বুবলার দ্বারা!

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


আপনি কি গ্রেটিকে সামনে নিয়ে যেতে পারেন d!=c[0]এবং একটি বাইট সংরক্ষণ করতে পারেন ?
এলপেড্রো

print(d,'duck')একটি বাইট সংরক্ষণ করতে। ডিফল্ট ডিলিমিটার একটি স্থান।
বুবলার

3

জাভা (জেডিকে 10) , 287 বাইট

Random r=new Random();int i;String c;do{i=r.nextInt(8);switch(i){case 0:c="Red";break;case 1:c="Orange";break;case 2:c="Yellow";break;case 3:c="Green";break;case 4:c="Blue";break;case 5:c="Indigo";break;case 6:c="Violet";break;default:c="Gray";}System.out.println(c+" duck");}while(i!=7)

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

আমার খুব প্রথম কোডগল্ফ! স্পষ্টতই প্রতিযোগিতামূলক নয়, অংশ নিতে সক্ষম হওয়ার জন্য যথেষ্ট জাভা (বর্তমানে সিএস 200 এ) শিখেছি বলে খুশি।


2

কোটলিন , 122 বাইট

while({x:Any->println("$x duck");x!="Grey"}("Red,Orange,Yellow,Green,Blue,Indigo,Violet,Grey".split(",").shuffled()[0])){}

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


1
কোটলিনে এলোমেলো পূর্ণসংখ্যার মান পেতে সেখানে কারও পক্ষে সহায়ক হতে পারেন, আপনি নিম্নলিখিতটি ব্যবহার করতে পারেন: (0..7) ()
মকোটোসান

2

এমএস-এসকিউএল, 158 বাইট

DECLARE @ VARCHAR(6)a:SELECT @=value FROM STRING_SPLIT('Red,Orange,Yellow,Green,Blue,Indigo,Violet,Grey',',')ORDER BY NEWID()PRINT @+' duck'IF @<>'Grey'GOTO a

মূলত রাজ্জানের চমৎকার উত্তরের উপর ভিত্তি করে , তবে STRING_SPLITএমএস-এসকিউএল 2016 এবং তার পরে নির্দিষ্ট করে ফাংশনটি ব্যবহার করে । লুপের GOTOপরিবর্তে একটি ব্যবহার করে WHILE

বিন্যাসকৃত:

DECLARE @ VARCHAR(6)
a:
    SELECT @=value FROM 
        STRING_SPLIT('Red,Orange,Yellow,Green,Blue,Indigo,Violet,Grey',',')
        ORDER BY NEWID()
    PRINT @+' duck'
IF @<>'Grey'GOTO a


2

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

কোন আমদানি দেখুন!

v=0
while 1:x=id(v)%97%8;print"GVIYORGBrinererleodladeuyliln ee egog n  towe"[x::8],"duck";v=1/x,v

( duckপ্রশ্নগুলির মধ্যে বর্ণের মধ্যে এবং অতিরিক্ত জায়গাগুলি মুদ্রণ করে )

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

একটি চমত্কার দরিদ্র সিউডো-রেণ্ডম সংখ্যা উত্পাদক বস্তুর আইডি সহ বীজযুক্ত 0 (কিন্তু এটা বৈশিষ্ট ফিট বলে মনে হয়) যা বারবার, একটি পূর্ণসংখ্যা উৎপাদ x, ইন [0,7] যা সূচকের থেকে অক্ষরের একটি তালিকা যেভাবেই ব্যবহার করা হয় এর মধ্যে একটি স্থান জোর করে টিপল হিসাবে প্রিন্ট করা রঙের নাম পেতে 8 টি পদক্ষেপ duck। যখন xহয়ে শূন্য Greyছাপা হয় এবং ভিত্তি মডিউল পাশে ইনপুট মূল্যায়ন শূন্য দ্বারা বিভক্ত করা প্রয়াস র্যান্ডম সংখ্যা উত্পাদক ত্রুটি ( v=1/x,vচেষ্টা প্রথম উপাদান দিয়ে একটি নতুন tuple করতে 1/x= 1/0)


পাইথন 3-তে একইভাবে 100

v=0
while 1:x=id(v)%17%8;print("GVIYORGBrinererleodladeuyliln ee egog n  towe"[x::8],"duck");v=1/x,v
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.