หอยทากสีเทา 1206 ไบต์สำหรับ I / O ตัวเลข 149 ไบต์สำหรับยูนารี I / O
เพื่อความสนุก. องค์ประกอบของโปรแกรมแรก:
- 451 ไบต์แปลงตัวเลขเป็นจุด
- 121 ไบต์ฟังก์ชั่นหลัก (รุ่นแยกเขียนด้านล่าง)
- 634 ไบต์แปลงจุดเป็นตัวเลข
รับอินพุตและเอาต์พุตตัวเลข การป้อนข้อมูลเป็นA
, B
, C
ตามลำดับ เมื่อเทียบกับคนอื่น ๆ (ใกล้) คำตอบรหัสมีความซับซ้อนของO(1)
O(n)
แต่สำหรับจำนวนมากมันอาจทำให้ความจำของคุณเสียก่อน
หยุดทำงานหากไม่พบวิธีแก้ไข
INPUT p
POP Z r .!
f
POP Z o .
q
POP Z p [p]
GOTO [Z]
0
POP Z n .
GOTO w
1
POP Z n ..
GOTO w
2
POP Z n ...
GOTO w
3
POP Z n ....
GOTO w
4
POP Z n .....
GOTO w
5
POP Z n ......
GOTO w
6
POP Z n .......
GOTO w
7
POP Z n ........
GOTO w
8
POP Z n .........
GOTO w
9
POP Z n ..........
GOTO w
w
POP Z o .[o][o][o][o][o][o][o][o][o][o][n]
GOTO [r] [p]
GOTO q
!
POP Z A .[o]
INPUT p
POP Z r .@
GOTO f
@
POP Z B .[o]
INPUT p
POP Z r .#
GOTO f
#
POP Z C .[o]
POP H N .[B]
U
POP Z A [A]
POP Z B [B]
GOTO D [A]
GOTO $ [B]
GOTO U
$
POP Z A .[A][C]
POP Z H ..[H]
POP Z B .[N]
GOTO U
D
POP Z r .
POP Z M .
POP Z N ...........
POP Z z .[N]
POP Z V .[H]
+
GOTO l[V] [H]
POP Z H [H]
POP Z z [z]
GOTO ( [z]
GOTO +
(
GOTO ) [H]
POP Z z .[N]
POP Z M ..[M]
POP Z V .[H]
GOTO +
)
POP Z r .0[r]
POP Z M ..[M]
POP Z H .[M]
POP Z M .
POP Z V .[H]
POP Z z .[N]
GOTO +
l
POP Z r .0[r]
GOTO -
l.
POP Z r .1[r]
GOTO -
l..
POP Z r .2[r]
GOTO -
l...
POP Z r .3[r]
GOTO -
l....
POP Z r .4[r]
GOTO -
l.....
POP Z r .5[r]
GOTO -
l......
POP Z r .6[r]
GOTO -
l.......
POP Z r .7[r]
GOTO -
l........
POP Z r .8[r]
GOTO -
l.........
POP Z r .9[r]
GOTO -
-
GOTO / [M]
POP Z H .[M]
POP Z M .
POP Z V .[H]
POP Z z .[N]
GOTO +
/
OUTPUT [r]
f
เป็นฟังก์ชั่นวนซ้ำเพื่อแปลงจำนวนเต็มเป็นจุด อาร์กิวเมนต์จะถูกบันทึกในและผลผลิตใน[p]
[o]
U
คือการทดสอบฟังก์ชั่นS1>=S2
การจัดเก็บค่าพารามิเตอร์ในB, A
ขณะที่ประหยัดลงไปA-B
A
รหัสเริ่มต้นจากD
ต้นขั้วคือการแปลงจุดเป็นตัวเลข
หลักการพื้นฐานเหมือนกันกับคำตอบ C ของฉัน (ริปเอาท์พุทที่ผิดพลาดสำหรับการแก้ปัญหาที่เป็นไปไม่ได้)
รุ่นสแตนด์อโลน 149 156 157 167 170 230 ไบต์สนับสนุนเฉพาะ I / O ที่มีขนาดต่างกัน
ความต้องการการป้อนข้อมูลที่จะเป็นจุดเช่นสำหรับ..........
10
INPUT A
INPUT B
INPUT C
POP N H .
GOTO U
$
POP N A .[A][C]
POP Z H ..[H]
U
POP Z A [A]
POP Z N ..[N]
GOTO D [A]
GOTO $ .[B] [N]
GOTO U
D
OUTPUT .[H]
U
คำนวณA=A-B
และกระโดดไปเมื่อD
A<=0
มิฉะนั้น$
กำหนดA+C
ไปและโทรA
U
หยุดทำงานหากไม่พบวิธีแก้ไข
เคล็ดลับ:ใช้ความสามารถของ "คอมไพเลอร์" ในการตีความสตริงที่ว่างเปล่า คุณสามารถตัดออกเงื่อนไขในGOTO
คำสั่งที่จะทำให้กระโดดไม่ จำกัด POP
และเคล็ดลับการทำงานเดียวกัน
หมายเหตุ:ฉันอาจเล่นกอล์ฟได้มากกว่า 3 ไบต์ แต่หากทำเช่นนั้นคำตอบของฉันและ WheatWizard จะมีตรรกะแบบเดียวกันแน่นอน ผลลัพธ์น่าจะเป็นโซลูชัน GraySnail สั้นที่สุดและฉันพยายามพิสูจน์