ต้มตุ๋นเป็ดโกรธ


56

ไม่มีใครค่อนข้างบางสิ่งที่อิโมติคอน>:Uมีจุดมุ่งหมายที่จะเป็นตัวแทน แต่นักวิชาการหลายคนเชื่อว่ามันดูเหมือนโกรธเป็ด สมมติว่าเป็นกรณี

งาน

รับค่าจำนวนเต็มnระหว่าง 0 ถึง 3 รวมพิมพ์หรือส่งคืน

quack

ถ้าn = 0

>:U

ถ้าn = 1

     U   U
>  : U   U
 >   U   U
>  : U   U
      UUU

ถ้าn = 2 หรือ

                  >:U         >:U
>:U               >:U         >:U
   >:U       >:U  >:U         >:U
      >:U         >:U         >:U
         >:U      >:U         >:U
      >:U         >:U         >:U
   >:U       >:U  >:U         >:U
>:U               >:U         >:U
                     >:U>:U>:U

ถ้าn = 3

คุณสามารถสมมติว่าการป้อนข้อมูลจะถูกต้องเสมอ ไม่ควรมีพื้นที่นำหน้าในเอาต์พุต แต่จำนวนของพื้นที่ต่อท้ายใด ๆ ก็ดี เป็ด (ยกเว้น @cobaltduck ที่เป็นไปได้) ไม่มีความอดทนต่อช่องโหว่ รหัสที่สั้นที่สุดในหน่วยไบต์ชนะ


90
ก่อนอื่นฉันคิดว่า "หือเป็ดคืออะไร" โชคดีที่คุณได้ให้ลิงก์ไปยังหน้าวิกิพีเดีย
Adnan

6
เป็ดไม่มีความอดทนต่อช่องโหว่ " แต่คุณเป็นนกไม่ใช่เป็ดนั่นหมายความว่าเราสามารถใช้ช่องโหว่ได้หรือไม่? : P
Downgoat

6
@Downgoat Nope การแก้ไขนั้นก็ไม่จำเป็นเลยดังนั้นฉันจึงย้อนกลับ
Alex A.

6
@Downgoat s /: P />: U /
ETHproductions

7
เป็ดไม่มีความอดทนต่อช่องโหว่ " นั่นคือเพื่อนของฉันเป็นกฎตายตัวที่เป็นอันตราย หากฉันไม่ทราบเจตนาของคุณฉันอาจผิด
cobaltduck

คำตอบ:


19

CJam, 108 90 85 ไบต์

"quack"">:U":D"scT¦{$ì"{269b22bSf*D}:F~[ZYB].*s.+s5/"ÿ3nÜïS{JÐø¦yûn"F*33/z]ri=zN*

โปรดทราบว่าอักขระบางตัวไม่สามารถพิมพ์ได้ ลองออนไลน์!

พื้นหลัง

เอาต์พุตสองรายการแรกนั้นไม่สามารถบีบอัดได้ใน CJam

การบีบอัดเอาต์พุตสุดท้ายนั้นตรงไปตรงมา หลังจากดึง linefeeds ทั้งหมดแล้วเราสามารถแยกสตริงผลลัพธ์ที่เกิดขึ้น>:Uและคำนวณความยาวของแต่ละสตริงผลลัพธ์ของช่องว่าง

นั่นส่งผลให้อาร์เรย์

[18 9 0 15 9 3 7 2 9 6 9 9 9 6 9 6 9 9 3 7 2 9 0 15 9 21 0 0 0]

ซึ่งเราสามารถจัดเก็บได้อย่างมีประสิทธิภาพโดยแปลงจากฐาน 22 เป็นฐาน 269 ทำให้ได้ตัวเลข

[255 12 51 110 220 239 83 123 74 208 248 166 121 251 110 17]

เนื่องจากแต่ละหลักน้อยกว่า256เราจึงสามารถเก็บเป็นไบต์เดียว

ในที่สุดการบีบอัดเอาต์พุตที่สามจะง่ายขึ้นหากเราโอนสายและคอลัมน์:

 > > 
  >  

 : : 

UUUU 
    U
    U
    U
UUUU

การนับช่องว่างอีกครั้งระหว่างตัวละครที่ไม่ใช่ช่องว่างเราได้รับอาร์เรย์

[1 1 3 8 1 6 0 0 0 5 4 4 0 0 0 0 0]

ซึ่งกลายเป็น

[115 159 99 84 166 123 36 236 6]

เมื่อแปลงรหัสจากฐาน 22 ถึงฐาน 269

มันทำงานอย่างไร

"quack"   e# Push the first output.

">:U":D   e# Push the second output, and save it in D.

e# Push [115 159 99 84 166 123 36 236 6] as bytes.

"scT¦{$ì"

{         e# Define a code block:
  269b22b e#   Transcode from base 269 to base 22.
  Sf*     e#   Replace each digit with a string of that many spaces.
  D       e#   Push D.
}         e#
:F~       e# Save the block in F. Execute it.
[ZYB]     e# Push [3 2 11].
.*        e# Vectorized repeat; push [">>>" "::" "UUUUUUUUUUU"].
s         e# Flatten the array of strings.
.+        e# Append the nth character to the nth string of spaces.
s5/       e# Flatten and split into chunks of length 5.

e# Push [255 12 51 110 220 239 83 123 74 208 248 166 121 251 110 17] as bytes.

"ÿ3nÜïS{JÐø¦yûn"

F         e# Execute F.
*         e# Join the resulting array of strings of spaces, separating by ">:U".
33/       e# Split into chunks of length 33.
z         e# Zip; transpose rows with columns.

]         e# Wrap the entire stack in an array.
ri        e# Read a token from STDIN and interpret it as an integer.
=         e# Retrieve the element at the corresponding index.
z         e# Zip; transpose rows with columns or map "string" to ["string"].
N*        e# Join, separating by linefeeds.

2
ฉันชอบความพิเศษ:Dระหว่างสองสาย
Zgarb

7
@Zgarb เขาได้เอาใจเจ้าเหนือหัวผู้ยิ่งใหญ่ เป็ดตอนนี้ยิ้ม
Alex A.

7
ฉันผ่านหน้าความคิด "172 ... 162 ... 182 ... ฉันสามารถเอาชนะสิ่งเหล่านั้นรอ 90? โอ้มันเป็นเดนนิสที่ไม่สามารถเอาชนะได้ ... "
ETHproductions

22

Java, 303 286 ไบต์

บันทึกแล้ว 17 ไบต์ขอบคุณ @VoteToClose!

ไม่ได้หมายถึงว่าจะสั้นที่สุดฉันแค่คิดว่ามันจะสนุกที่จะลองใน Java

สร้างรายการตัวแปรสตริงที่แสดงถึงสตริงทั่วไปจากนั้นสร้างอาร์เรย์ของเอาต์พุตทั้งหมดจากนั้นพิมพ์พารามิเตอร์ที่เหมาะสม

String a(int y){String n="\n",d=">:U",A=" ",B=A+A,C=B+B,D=C+C,a="U"+B+" U"+n,G=D+A,H=C+B,c=d+G+d+n,E=B+A,F=C+E;String[]z={"quack",d,C+A+a+">"+B+": "+a+" >"+E+a+">"+B+": "+a+C+B+"UUU",D+D+B+c+d+D+F+c+B+A+d+F+d+B+c+H+d+G+c+G+d+H+c+H+d+G+c+E+d+F+d+B+c+d+D+F+c+D+D+C+A+d+d+d};return z[y];}

Ungolfed:

String a(int y) {
    String n = "\n", d = ">:U", A = " ", B = A + A, C = B + B, D = C + C,
            a = "U" + B + " U" + n, G = D + A, H = C + B, c = d + G + d + n,
            E = B + A, F = C + E;
    String[] z = { "quack", d, C + A + a + ">" + B + ": " + a + " >" + E + a + ">" + B + ": " + a + C + B + "UUU", D + D + B + c + d + D + F + c + B + A + d + F + d + B + c + H + d + G + c + G + d + H + c + H + d + G + c + E + d + F + d + B + c + d + D + F + c + D + D + C + A + d + d + d };
    return z[y];
}

นี่เป็นคำตอบแรกของฉันในเว็บไซต์นี้ดังนั้นโปรดบอกฉันว่าฉันทำอะไรผิดหรือเปล่า


2
มันดูดี! โพสต์แรกที่ดีและยินดีต้อนรับสู่ PPCG!
Conor O'Brien

@AlexA ขอบคุณที่แจ้งให้ฉันทราบฉันได้แก้ไข
FlyingPiMonster

2
@ kittycat3141 ดูดีมาก ทางออกที่ดีและขอขอบคุณสำหรับการเข้าร่วมในความท้าทายของฉัน! :)
Alex A.

ปรากฏว่าD+AและC+Bปรากฏบ่อยพอที่จะตีกอล์ฟต่อไปเป็น 2 ตัวแปรใหม่ ฉันยังได้รับความรู้สึกเพียงเล็กน้อยว่าการใช้อาเรย์กับ a for loop อาจช่วยได้ แต่ฉันยังไม่ทราบวิธียัง ...
Addison Crump

9

05AB1E , 162 159 157 ไบต์

รหัส

Dammit ยาวเกินไป แต่อย่างน้อยก็มีบางอย่าง:

">:U"VI3Qið16×7166b1ð:0Y:DUJ,Yð13×JD?X,3838b1ð:0Y:D?X,16255b1ð:0Y:D?X,16367b1ð:0Y:4F?X,}ð21×Y3×J,}¹2Qið4×" U   U"©J,">  :"®JD," >  "?®,,ð6×'U3×J,}¹iY,}"quack

ลองออนไลน์!


คำอธิบาย

ส่วนแรกของรหัสที่มีอยู่">:U"Vซึ่งตั้งค่าYเป็นสตริงที่ หลังจากนั้นเราก็ตรวจสอบว่าอินพุทเท่ากับ 3 นั่นคือI3Qiส่วนที่ทำ ถ้าเท่ากับเราพิมพ์นกกางเขนยักษ์:

N = 3

มันเริ่มต้นด้วยการð16×กดอักขระ 16 ช่อง 7166bหลังจากนั้นมีจำนวน ครอบคลุม">:U "ส่วนนี้ด้วยความช่วยเหลือเล็กน้อยจาก Retina :) ฉันใช้สคริปต์นี้เพื่อแปลงสตริงเป็นเลขฐานสอง หลังจากที่เราได้รับการ1ð:0Y:มีส่วนร่วมซึ่งแทนที่ทุก1ด้วยตัวอักษรพื้นที่และทุก0ด้วยซึ่งได้รับการตั้งค่าให้Y >:Uหลังจากนั้นเราDอัพสตริงนี้เก็บไว้ในการXใช้UและJoin สแต็ค เราป๊อปอัพนี้โดยใช้,ซึ่งพิมพ์สตริงเต็มกับขึ้นบรรทัดใหม่ ทั้งหมดอื่น ๆ หลังจากนั้นทั้งหมดขึ้นอยู่กับเจ้าชายคนเดียวกัน }ถ้าคำสั่งสิ้นสุดที่สอง

การแปลงเต็มสามารถพบได้ที่นี่

N = 2

ตอนนี้เราตรวจสอบว่าการป้อนข้อมูลเท่ากับ 2 นี้จะทำที่¹2Qiส่วน หลังจากนั้นถ้าเท่ากับเราผลักดันอักขระช่องว่าง 4 ð4×ครั้งโดยใช้ หลังจากนั้นเราก็ดัน" U U"สตริงและเก็บไว้โดยใช้©(ความคิดที่ถูกขโมยโจ๋งครึ่มจาก Jelly: p) เราJยังคงอยู่ในสแต็กอีกครั้งและพิมพ์ด้วยบรรทัดใหม่ หลังจากที่เราผลักดัน"> :"สตริงเรียก" U U"ใช้®, JOIN สแต็คและDuplicate สายนี้และพิมพ์เหล่านี้ทั้งในบรรทัดเดียวกัน

แบบทดสอบสั้น ๆ สิ่งนี้จะทำ: " > "?®,?

หลังจากพิมพ์สตริงข้างต้นเราจะได้รับสำเนาของบรรทัดที่สองของใบหน้าและพิมพ์สิ่งนี้ (เนื่องจากเป็นเช่นเดียวกับบรรทัดที่ 2)

ส่วนสุดท้ายที่กล่าวถึงในกรณีนี้คือ:

ð6×'U3×J,

ð6×        # Push the space character × 6
   'U3×    # Push the "U" character three times
       J,  # Join and print pop with a newline

N = 1

อันนี้ง่ายต่อการอธิบาย:

¹1QiY

¹1Qi   # Check if the input is equal to 1
    Y  # Push the magpie face
       # This is then implicitly printed

N = 0

¹0Qi"quack

¹0Qi        # Check if the input is equal to 0
    "quack  # Weird sound what magpies make
            # Implicitly printed

กรุณาอธิบาย : P
Addison Crump

@VoteToClose เรียบร้อยแล้ว :)
Adnan

"ยาวเกินไป" ดูคำตอบของฉัน :-P
Luis Mendo

2
TIL ที่นกกางเขนต้มตุ๋น เด่นชัด
Alex A.

8

Vitsy , 172 171 159 ไบต์

โอ้ geez ถ้าฉันต้องการบางสิ่งบางอย่างที่จะแสดงพลังของวิธีการฉันได้รับมัน

' 'V1+m
'kcauq'Z
'U:>'Z
58m5m6m'   > 'Z5m6m'UUU'68m
f3+bm9mamcm98m2m6bmcmam9mf6+8m3\[2m]
a'U   U'Z
' :  >'Z5m
Z2m98ma2m
\VZ
2mfbm
VVVZ2m78m2mVV7m
8m7m
68m2m9bm

ลองออนไลน์!

วิธีการทำงานนี้คือการเรียกวิธีการต่างๆตลอดตัวเอง คำอธิบายด้านล่าง:

' 'V1+m
' 'V      Save character literal ' ' as a permanent variable.
    1+    Add one to the top item of the stack (input + 1)
      m   Go to that index of code.

'kcauq'Z
'kcauq'   Push 'quack' to the stack.
       Z  Output everything in the stack as a char.

'U:>'Z
'U:>'Z    Ouput ">:U" with the same method as the previous line.

Now on to some more... interesting lines.

58m5m6m'   > 'Z5m6m'UUU'68m
5              Push space, push 4
 8m            Call the 8th line index.
               As we will soon see, the 8th line index duplicates the space
               the number of times specified by the number just before the call 
               (4 in this case)
   5m          Call the 5th line index.
               The 5th line index outputs the 'U   U' and a newline.
     6m        Call the 6th line index.
               The 6th line index outputs '>  : U   U' and a newline.
'   > 'Z       Output ' >   '.
        5m6m   Same method calls as before.
'UUU'          Push 'UUU'.
     68m       Push 6, then call the 8th line index. This gives us the correct padding.

f3+bm9mamcm98m2m6bmcmam9mf6+8m3\[2m]
f3+              Push 18.
   bm            Call the 11th line index.
                 The 11th line index calls the 8th line index (which we've already seen
                 in action) and then the 7th line index, which you can find and explanation
                 for below (it does a lot)
     9m          Call the 9th line index.
                 The 9th line index outputs '>:U               >:U         >:U' (explanation lower)
       am        Call the 10th line index.
                 ...I'm gonna stop explaining these and just tell you to go to the lines now. :P
         cm      Call the 12th line index.
9                Push space, push 9.
 8m              Call the 8th line index (explained below and before).
   2m            Call the 2nd line index.
     6           Push 6.
      bm         Call the 11th line index. We've finished up to '>:U      >:U         >:U' now.
cm               You guessed it! Call the 12th line index. (explanation below)
  am             Call the 10th line index. (explanation below)
    9m           Call the 9th line index. (explanation below)
f6+              Push space, push 19 21.
   8m            Call the 8th line index. (explanation below)
     3\[2m]      Call the 2nd line index thrice.

All of the rest of these methods are supporting methods now.

a'U   U'Z       Output 'U   U' followed by a newline.

' :  >'Z5m      Output '>  : U   U' followed by a newline.

Z2m98ma2m
Z               Output everything currently in the stack.
 2m             Call the 2nd line index.
   9            Push space, push 8.
    8m          Call the 8th line index. (explained below)
      a         Push a newline to the stack.
       2m       Call the 2nd line index.
                This handles the biggest angry duck face's faces showing the eyebrows and eyes.

\VZ
\V    Push space as many times as the top item specifies.
  Z   Output everything in the stack.

2mfbm
2m      Call the 2nd line index.
  f     Push space, push 14.
   bm   Go to the 11th line index.
        This handles the mouth and some parts of the eyebrows of the biggest duck face.

VVVZ2m78m2mVV7m
VVVZ              Output 3 spaces (and whatever was pushed before it)
    2m            Call the 2nd line index.
      7           Push space, push 6.
       8m         Call the 8th line index. (explained... above)
         2m       Call the 2nd line index.
           VV     Push 2 spaces.
             7m   Call the 7th line index.

8m7m     This is pretty damn self-explanatory if you've read this far.

68m2m9bm
6            Push space, push 5.
 8m          Call the 8th line index.
   2m        Call the 2nd line index.
     9       Push space, push 9.
      bm     Call the 11th line index.

รหัสนี้ไร้สาระ มันเป็นรูปแบบ verbose คือ:

toggle single quote;
 ;
toggle single quote;
save top as permanent variable;
push 1;
add top two;
goto top method;
:toggle single quote;
k;
push 12;
push 10;
flatten top two stacks;
q;
toggle single quote;
output stack as chars;
:toggle single quote;
U;
clone current stack;
go forward;
toggle single quote;
output stack as chars;
:push 5;
push 8;
goto top method;
push 5;
goto top method;
push 6;
goto top method;
toggle single quote;
 ;
 ;
 ;
go forward;
 ;
toggle single quote;
output stack as chars;
push 5;
goto top method;
push 6;
goto top method;
toggle single quote;
U;
U;
U;
toggle single quote;
push 6;
push 8;
goto top method;
:push 15;
push 3;
add top two;
push 11;
goto top method;
push 9;
goto top method;
push 10;
goto top method;
push 12;
goto top method;
push 9;
push 8;
goto top method;
push 2;
goto top method;
push 6;
push 11;
goto top method;
push 12;
goto top method;
push 10;
goto top method;
push 9;
goto top method;
push 15;
push 6;
add top two;
push 8;
goto top method;
push 3;
repeat next instruction set top times;
begin recursive area;
push 2;
goto top method;
end recursive area;
:push 10;
toggle single quote;
U;
 ;
 ;
 ;
U;
toggle single quote;
output stack as chars;
:toggle single quote;
 ;
clone current stack;
 ;
 ;
go forward;
toggle single quote;
output stack as chars;
push 5;
goto top method;
:output stack as chars;
push 2;
goto top method;
push 9;
push 8;
goto top method;
push 10;
push 2;
goto top method;
:repeat next instruction set top times;
save top as permanent variable;
output stack as chars;
:push 2;
goto top method;
push 15;
push 11;
goto top method;
:save top as permanent variable;
save top as permanent variable;
save top as permanent variable;
output stack as chars;
push 2;
goto top method;
push 7;
push 8;
goto top method;
push 2;
goto top method;
save top as permanent variable;
save top as permanent variable;
push 7;
goto top method;
:push 8;
goto top method;
push 7;
goto top method;
:push 6;
push 8;
goto top method;
push 2;
goto top method;
push 9;
push 11;
goto top method;

7

JavaScript (ES6), 163 ไบต์

var solution =

n=>["quack",d=">:U",`5U3U
>2:1U3U
1>3U3U
>2:1U3U
6UUU`,`99090
096090
30702090
609090
906090
609090
30702090
096090
993000`][n].replace(/\d/g,c=>+c?" ".repeat(c):d)
<input type="number" oninput="R.textContent=solution(+this.value)"><pre id="R"></pre>

คำอธิบาย

ใช้การบีบอัดแบบ go-to ของฉันด้วย JavaScript: การเข้ารหัสแบบรันไทม์ ตัวเลขที่1จะ9แมปไปยังช่องว่างมากมายนั้น0แมปไปยังหน้าเป็ดโกรธและตัวละครอื่น ๆ ก็ยังคงเหมือนเดิม


1
น่าประทับใจมากสำหรับภาษาที่ไม่ใช่การเล่นกอล์ฟ แต่แถวที่อยู่ด้านบนและด้านล่างตรงกลางของ n = 3 ดูเหมือนจะหายไป
ETHproductions

@ETHproductions อ๊ะไม่แน่ใจว่าเกิดอะไรขึ้นที่นั่น แก้ไขแล้ว
user81655

7

Japt, 116 105 102 99 96 ไบต์

["quack""c)`+«öÂ[@=^Gñ`1]o2"mc r'4#¿+R "4z>2:z >2z>2:z6UUU"rz" U3U
" '1]®r'1">:U" r"%d"_SpZ}ÃgU

ประกอบด้วย unprintable ทดสอบออนไลน์!

มันทำงานอย่างไร

สองสายแรกไม่ได้ถูกบีบอัดเลย ที่สามจะถูกบีบอัดได้ง่ายๆโดยการเปลี่ยนการทำงานของช่องว่างในแต่ละที่มีความยาวของมันแล้วด้วย" U3U" "z"อันสุดท้ายซับซ้อนกว่า:

  1. แทนที่แต่ละช่องว่าง 2-9 ด้วยความยาว
  2. แทนที่ด้วย>:U1
  3. แทนที่ด้วย191\n 4( 4ไม่ได้ใช้ที่อื่นในสตริง)
  4. แมปรหัสไบต์ที่ถูกต้อง ( 10- 255หรือ0A- FF) กับอักขระด้วยรหัสถ่านนั้น

สตริงผลลัพธ์มีความยาวเพียง21 19 ไบต์ แต่การบีบอัดใช้เวลาอีก31 29

หลังจากคลายการบีบอัดสตริงเราก็นำรายการไปที่ตำแหน่งUอินพุต (อาร์เรย์ถูกจัดเรียง[0,3,2,1]เนื่องจากมีข้อบกพร่องซึ่งทำให้นับจากจุดสิ้นสุดของอาร์เรย์แทนที่จะเป็นจุดเริ่มต้น)

[                      // Create an array of the following:
  "quack"              //  "quack".

  "c)`+«öÂ[@=^Gñ`1]o2" //  Take this string (contains an unprintable).
                       //  Map each char to its char code.
                       //  This produces "994196431712461949164619431712419649931112".
  r'4#¿+R              //  Replace each "4" with the char code of "¿" (191) + a newline.

  "4z>2:z >2z>2:z6UUU" //  Take this string.
  rz" U3U\n"           //  Replace each "z" with " U3U\n".

  '1                   //  "1".
]
®              Ã       // Map each item by this function:
r'1">:U"               //  Replace each "1" with ">:U".
r"%d"_SpZ}             //  Replace each remaining digit Z with Z spaces.

gU                     // Get the item at index -U, wrapping. 
                       // (This should just be U, but there's a bug which negates it.)

5

MATL , 283 182 ไบต์

บันทึก101ไบต์ด้วย @Adnan!

สิ่งนี้ใช้ตัวเลขทศนิยมเพื่อเข้ารหัสดัชนี0... 3ถึงสี่ตัวอักษรสำหรับกรณีที่ 2 และ 3 ตัวเลขทศนิยมอาจถูกบีบอัดโดยใช้การเข้ารหัสแบบฐาน 64 แต่ก็เถอะ!

สำหรับกรณีที่ 3 ใช้เคล็ดลับที่ดีมากที่ @Adnan ใช้: กำหนดลำดับเลขฐานสองเพื่อเข้ารหัสแต่ละแถวโดยที่0และ1สอดคล้องกับช่องว่างและ>:Uตามลำดับ

~?'quack'}G1=?'>:U'}G2=?' :>U'12336 8466480h2109488h8466480h4032h4YA47-)}268697600 67174401h16795656h67174464h67174912h67174464h16795656h67174401h14680064h"@BP48+]Xh49'>:U'YX48 32YXc

ลองออนไลน์!


3
สำหรับกรณีสุดท้ายวิธีการใช้สิ่งนี้แทนที่1ด้วยช่องว่างและ0ด้วย>:Uสตริง ฉันไม่รู้ว่าจะช่วยได้หรือไม่
Adnan

@Adnan นั่นเป็นความคิดที่ดี!
Luis Mendo เมื่อ

5
@Adnan 101 ไบต์บันทึกแล้ว: -O
Luis Mendo

นั่นช่างยอดเยี่ยม! คำตอบที่ดีมาก! :)
Adnan

5

หมากฝรั่งอบเชย, 76 ไบต์

0000000: 6c33 502b 2c4d 4cce b636 54b3 b30a b536  l3P+,ML..6T....6
0000010: 5253 0081 5010 e6b2 5350 b082 3215 ecb0  RS..P...SP..2...
0000020: 8a42 1487 865a 1bab 2960 00a0 79c8 6c2e  .B...Z..)`..y.l.
0000030: 2026 a002 4221 0430 55c0 5938 cd40 9720   &..B!.0U.Y8.@. 
0000040: 6c06 6177 90e9 17ac 4102 4100            l.aw....A.A.

ไม่สามารถแข่งขันได้เนื่องจาก Cinnamon Gum ถูกสร้างขึ้นหลังจากการท้าทายนี้

ลองออนไลน์

คำอธิบาย

ไบต์แรกlระบุโหมด: ในกรณีนี้มันจะบอก Cinnamon Gum ให้เข้าสู่โหมดค้นหาตาราง อบเชยอบเชยจากนั้นคลายส่วนที่เหลือของสตริง (ซึ่งถูกบีบอัดด้วยzopfli --deflate) ลงในสิ่งนี้:

0&quack;1&>:U;2&     U   U
>  : U   U
 >   U   U
>  : U   U
      UUU;3&                  >:U         >:U
>:U               >:U         >:U
   >:U       >:U  >:U         >:U
      >:U         >:U         >:U
         >:U      >:U         >:U
      >:U         >:U         >:U
   >:U       >:U  >:U         >:U
>:U               >:U         >:U
                     >:U>:U>:U

จากนั้นก็แยกโดยการ;ทำให้แต่ละคู่ค่าคีย์ (กับ&เป็นตัวคั่น) dictionary[input]ในพจนานุกรมและเอาท์พุท


5

JavaScript ES6, 232 223 203 188 ไบต์

บันทึกแล้ว29 44 bytes ขอบคุณ ETHproductions!

n=>[`quack`,r=`>:U`,`     U   U
>  : U   U
 >   U   U
>  : U   U
      UUU`,`00022
10022
0100 1  12
00122
20012
00122
0100 1  12
10022
0000211`.replace(/\d/g,N=>[g=`   `,r,g+g+g+r][N])][n]

ลองทดสอบดูสิ!


แน่นอนมันอาจเป็น atob'd ... ถ้าไม่สามารถ1และ0จะกลายเป็นจำนวน trinary?
Downgoat

1
@ Downgoat btoaing และ trinary ทั้งสองนั้นยาวกว่า
Conor O'Brien

คำตอบเก่า แต่คุณสามารถบันทึกได้ 15 ไบต์โดยเปลี่ยนr+g+g+g+rเป็นg+g+g+rและปรับสตริงให้เหมาะสม
ETHproductions

0

GML, 265 ไบต์

พอร์ตของคำตอบที่ยอดเยี่ยมของ @ kittycat3141 พร้อมคำแนะนำในการตีกอล์ฟเพิ่มเติมด้วยตัวแปรใหม่สองตัว (ซึ่งฉันชื่อ G และ H) โดย @VoteToClose ฉันจัดการให้สั้นลงอีกด้วยไวยากรณ์ที่ค่อนข้างหลวมของ GML

d=">:U"A=" "B=A+A;C=B+B;D=C+C;G=D+A;H=C+B;a="U"+B+" U"+"#"c=d+G+d+"#"E=B+A;F=C+E;x[0]="quack"x[1]=d;x[2]=C+A+a+">"+B+": "+a+" >"+E+a+">"+B+": "+a+H+"UUU"x[3]=D+D+B+c+d+D+F+c+B+A+d+F+d+B+c+H+d+G+c+G+d+H+c+H+d+G+c+E+d+F+d+B+c+d+D+F+c+D+D+C+A+d+d+d;return x[argument0]
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.