ได้โปรดส่งไอศครีมมาให้ฉัน


13

ทำให้ฉันเป็นไอศครีมโคน

เรามีร้านไอศครีมที่ยอดเยี่ยมมากมายในนิวอิงแลนด์ ส่วนใหญ่ปิดให้บริการในฤดูหนาวดังนั้น ...

   .-@@-.
  (======)
 (--------)
(==========)
(__________)
 \/\/\/\/\/
  \/\/\/\/
   \/\/\/
    \/\/
     \/

เป้าหมาย เอาท์พุทไอศครีมโคนด้านบนอย่างแน่นอน (หรือส่งคืนจากฟังก์ชัน)

นี่คือรหัสกอล์ฟเพื่อให้ได้คำตอบที่สั้นที่สุดชนะ


สิ่งนี้ดูเหมือนจะเป็นความท้าทายที่แปลกประหลาดไม่เพียงแค่เรียกใช้งานเท่านั้นเนื่องจากในทางเทคนิคแล้วสตริงเป็นวิธีการแก้ปัญหาสำหรับบางภาษาที่ตีความเช่น JS / Python?
จาค็อบเพอร์ซี่

2
@JacobPersi นี่คือความท้าทายคลาสสิกที่ซับซ้อน kolmogorovซึ่งจุดมุ่งหมายคือการบีบอัดสตริงที่กำหนดให้มากที่สุดเท่าที่เป็นไปได้ hardcoding อาจจะไม่เล่นกอล์ฟจนเกินไป
Mr. Xcoder

6
@MichaelDorgan หลายภาษาที่ถูกคิดค้นขึ้นสำหรับการเล่นกอล์ฟรหัส แต่ที่ไม่ควรกีดกันคุณจากการตอบรับในภาษาการผลิต - นี่ก็แนะนำให้ upvote คำตอบที่น่าสนใจและคำตอบในiCeCrEaMCoNeจะไม่เป็นหนึ่งในบรรดา ไซต์นี้เคยมีกฎที่คุณไม่สามารถตอบได้ในภาษา (/ ใช้คุณสมบัติ) ที่ใหม่กว่าความท้าทาย แต่มันถูกแทนที่ด้วย "ไม่ตอบคำตอบเล็กน้อย"
ท้ายที่สุดแล้ว

3
เข้าใจ ฉันตอบล่าสุดใน Arm Assembler เห็นได้ชัดว่าจะไม่ชนะ แต่ก็สนุกไม่น้อย :)
Michael Dorgan

1
@StevenH นี่คือเมตาโพสต์ - ค่อนข้างเก่า แต่หลายคนยังไม่เห็น
dzaima

คำตอบ:


10

SOGL V0.12 , 24 ไบต์

u%⅝⁾⁷‰┘Η:⅛6s⁹№K⌠RΝīL°‘§╬

ลองที่นี่!

วิธีการบีบอัดอย่างง่าย:

....‘    push "@-.¶===(¶----(¶=====(¶_____(¶\/\/\¶/\/\¶\/\¶/\¶\"
     §   pad with spaces and reverse horizontally
      ╬  palindromize with 0 overlap and mirroring the characters

ไม่มีรุ่นบีบอัด - อีกต่อไปเนื่องจากการบีบอัด SOGL ใช้งานได้ดีสำหรับสิ่งนี้



8

PowerShellขนาด 85 ไบต์

"   .-@@-.
  (======)
 (--------)
($('='*10))
($('_'*10))"
1..5|%{" "*$_+'\/'*(6-$_)}

ลองออนไลน์!

หรือ

PowerShellขนาด 85 ไบต์

"   .-@@-.
  (======)
 (--------)"
'=','_'|%{"($($_*10))"}
1..5|%{" "*$_+'\/'*(6-$_)}

ลองออนไลน์!

เลือกของคุณ ในทั้งสองกรณีสามบรรทัดแรกไม่มีไบต์เพียงพอที่จะทำการบีบอัดใด ๆ ใน PowerShell

กรณีแรกใช้การคูณสตริงเพื่อสร้างความยาว 10 บรรทัด=และแต่ละ_บรรทัดในขณะที่กรณีที่สองใช้การคูณลูปและสตริง ในทั้งสองกรณีบรรทัดสุดท้ายรูปแบบกรวยวนลูปจาก1ไป5และซ้ำ outputting จำนวนที่เหมาะสมของพื้นที่แต่ละตามจำนวนที่เหมาะสมของชิ้นส่วนกรวย

สตริงทั้งหมดเหล่านี้จะถูกทิ้งไว้ที่ไพพ์ไลน์และความWrite-Outputสมบูรณ์ของโปรแกรมจะทำให้เรามีบรรทัดใหม่ระหว่างองค์ประกอบฟรี



7

ถ่าน 29 ไบต์

@-.⸿E=-=⁺×ι⁺³κ)×_⁵P↙⁶)⸿‖M←¤/\

ลองออนไลน์! การเชื่อมโยงคือการใช้รหัสเวอร์ชันอย่างละเอียด คำอธิบาย:

@-.⸿

พิมพ์ครึ่งขวาของบรรทัดแรก

E=-=⁺×ι⁺³κ)

สำหรับอักขระแต่ละตัว=-=ให้ทำซ้ำ 3 ครั้งเป็นครั้งแรกและอีกครั้งสำหรับแต่ละอักขระที่ตามมาจากนั้นผนวก a )แล้วพิมพ์แต่ละผลลัพธ์ในบรรทัดของตัวเอง

×_⁵

พิมพ์ 5 _วิ

P↙⁶

พิมพ์ขอบของกรวย

)⸿

พิมพ์สุดท้าย)และวางเคอร์เซอร์ไว้ข้างในกรวย

‖M←

สะท้อนครึ่งกรวย

¤/\

เติมร่างของกรวย


7

Python 2 , 86 ไบต์

n=10
while n:print['\/'*n,'('+35/n*2*'-=_='[n%4]+')','.-@@-.'][-2%n/4].center(12);n-=1

ลองออนไลน์!

การทำงานออกวิธีการแก้ปัญหาของลินน์


-2%n/4เจ๋งมาก :) คุณค้นหานิพจน์เช่นนั้นด้วยตนเองหรือทำการค้นหากำลังดุร้าย
ลินน์

1
@ ลินน์ฉันเป็นนักล่าสัตว์เดรัจฉาน ฉันก็ทำเช่นนั้น35/n*2ซึ่งมันก็พบว่าเป็น5*7/n*2เพราะมันไม่รู้ตัวเลขหลายหลัก
xnor

1
โอ้นั่นมันเรียบร้อย ฉันชอบที่จะเห็นรหัสที่มา!
ลินน์


5

05AB1E , 42 ไบต์

•3[ÜAʒg‰ŽÎ<\¦•6¡εS"-.@(=_"sèJ∞}'\∞5LRׂ˜.C

ลองออนไลน์!


1026344463000063444446353555ตอนนี้เป็นหมายเลขไอศครีม b / c ที่ไม่มีใครใช้เลย


Full program: •3[ÜAʒg‰ŽÎ<\¦•6¡εS"-.@(=_"sèJ∞}'\∞5LRׂ˜.C
current >> •  ||  stack: []
current >> 6  ||  stack: [1026344463000063444446355555]
current >> ¡  ||  stack: [1026344463000063444446355555, '6']
current >> ε  ||  stack: [['102', '3444', '30000', '344444', '355555']]
For each: S"-.@(=_"sèJ∞
Full program: S"-.@(=_"sèJ∞
current >> S  ||  stack: ['102']
current >> "  ||  stack: [['1', '0', '2']]
current >> s  ||  stack: [['1', '0', '2'], '-.@(=_']
current >> è  ||  stack: ['-.@(=_', ['1', '0', '2']]
current >> J  ||  stack: [['.', '-', '@']]
current >> ∞  ||  stack: ['.-@']
stack > ['.-@@-.']
Full program: S"-.@(=_"sèJ∞
current >> S  ||  stack: ['3444']
current >> "  ||  stack: [['3', '4', '4', '4']]
current >> s  ||  stack: [['3', '4', '4', '4'], '-.@(=_']
current >> è  ||  stack: ['-.@(=_', ['3', '4', '4', '4']]
current >> J  ||  stack: [['(', '=', '=', '=']]
current >> ∞  ||  stack: ['(===']
stack > ['(======)']
Full program: S"-.@(=_"sèJ∞
current >> S  ||  stack: ['30000']
current >> "  ||  stack: [['3', '0', '0', '0', '0']]
current >> s  ||  stack: [['3', '0', '0', '0', '0'], '-.@(=_']
current >> è  ||  stack: ['-.@(=_', ['3', '0', '0', '0', '0']]
current >> J  ||  stack: [['(', '-', '-', '-', '-']]
current >> ∞  ||  stack: ['(----']
stack > ['(--------)']
Full program: S"-.@(=_"sèJ∞
current >> S  ||  stack: ['344444']
current >> "  ||  stack: [['3', '4', '4', '4', '4', '4']]
current >> s  ||  stack: [['3', '4', '4', '4', '4', '4'], '-.@(=_']
current >> è  ||  stack: ['-.@(=_', ['3', '4', '4', '4', '4', '4']]
current >> J  ||  stack: [['(', '=', '=', '=', '=', '=']]
current >> ∞  ||  stack: ['(=====']
stack > ['(==========)']
Full program: S"-.@(=_"sèJ∞
current >> S  ||  stack: ['355555']
current >> "  ||  stack: [['3', '5', '5', '5', '5', '5']]
current >> s  ||  stack: [['3', '5', '5', '5', '5', '5'], '-.@(=_']
current >> è  ||  stack: ['-.@(=_', ['3', '5', '5', '5', '5', '5']]
current >> J  ||  stack: [['(', '_', '_', '_', '_', '_']]
current >> ∞  ||  stack: ['(_____']
stack > ['(__________)']
current >> '  ||  stack: [['.-@@-.', '(======)', '(--------)', '(==========)', '(__________)']]
current >> ∞  ||  stack: [['.-@@-.', '(======)', '(--------)', '(==========)', '(__________)'], '\\']
current >> 5  ||  stack: [['.-@@-.', '(======)', '(--------)', '(==========)', '(__________)'], '\\/']
current >> L  ||  stack: [['.-@@-.', '(======)', '(--------)', '(==========)', '(__________)'], '\\/', '5']
current >> R  ||  stack: [['.-@@-.', '(======)', '(--------)', '(==========)', '(__________)'], '\\/', [1, 2, 3, 4, 5]]
current >> ×  ||  stack: [['.-@@-.', '(======)', '(--------)', '(==========)', '(__________)'], '\\/', [5, 4, 3, 2, 1]]
current >> ‚  ||  stack: [['.-@@-.', '(======)', '(--------)', '(==========)', '(__________)'], ['\\/\\/\\/\\/\\/', '\\/\\/\\/\\/', '\\/\\/\\/', '\\/\\/', '\\/']]
current >> ˜  ||  stack: [[['.-@@-.', '(======)', '(--------)', '(==========)', '(__________)'], ['\\/\\/\\/\\/\\/', '\\/\\/\\/\\/', '\\/\\/\\/', '\\/\\/', '\\/']]]
current >> .  ||  stack: [['.-@@-.', '(======)', '(--------)', '(==========)', '(__________)', '\\/\\/\\/\\/\\/', '\\/\\/\\/\\/', '\\/\\/\\/', '\\/\\/', '\\/']]
   .-@@-.
  (======)
 (--------)
(==========)
(__________)
 \/\/\/\/\/
  \/\/\/\/
   \/\/\/
    \/\/
     \/
stack > ['   .-@@-.\n  (======)\n (--------)\n(==========)\n(__________)\n \\/\\/\\/\\/\\/\n  \\/\\/\\/\\/\n   \\/\\/\\/\n    \\/\\/\n     \\/']

•3[ÜAʒg‰ŽÎ<\¦•               | Pushes 1026344463000063444446355555 to the stack.
-----------------------------+-------------------------------------------------
6¡                           | Split on 6's.
-----------------------------+-------------------------------------------------
  ε             }            | Loop on each piece to create the top of the icecream...
   S                         | Split into single chars.
    "-.@(=_"sè               | Substitute in the correct symbol for each number.
              J∞             | Join, then mirror.
-----------------------------+-------------------------------------------------
                 '\∞         | Push \/.
                    5LR      | Push [5,4,3,2,1]
                       ×     | Multiply '\/' by each 5,4,3,2 and 1.
                        ‚˜   | Join top to bottom.
                          .C | Center w/ newlines.


3

C, 171 ไบต์

i;p(c,n,o){for(printf("%*c",o,i?32:40);n--;)printf(c);puts(i?"":")");}f(){p(".-@@-.",i=1,3);--i;p("=",6,3);p("-",8,2);p("=",10,1);p("_",10,1);for(i=6;--i;)p("\\/",i,6-i);}

ลองออนไลน์!

C, 146 ไบต์

f(){puts("   .-@@-.\n  (======)\n (--------)\n(==========)\n(__________)\n \\/\\/\\/\\/\\/\n  \\/\\/\\/\\/\n   \\/\\/\\/\n    \\/\\/\n     \\/");}

เพียงพิมพ์สตริงของฮาร์ดโค้ด

ลองออนไลน์!


1
คุณสามารถทำได้ดีกว่านี้ฉันคิดว่า ...
cleblanc

2

Python 2 , 104 ไบต์

ยืมเคล็ดลับจากคำตอบของ Jonathan Frechและขอบคุณเขาที่ช่วยฉันด้วยเช่นกัน

print"   .-@@-.\n  (======)\n "+"(%s)\n"*3%("-"*8,"="*10,"_"*10),
i=5
while i:print(6-i)*" "+"\/"*i;i-=1

ลองออนไลน์!


Python 2 , 108 ไบต์

print"""   .-@@-.
  (======)
 (--------)
(==========)
(__________)"""
i=5
while i:print(6-i)*" "+"\/"*i;i-=1

ลองออนไลน์!




2

Perl 5 , 92 ไบต์

say'   .-@@-.
  (======)
 (--------)
(==========)
(__________)';$_='\/'x6;say while s%\\/% %

ลองออนไลน์!


คุณไม่จำเป็นต้องนับอินพุตต่อจำนวนไบต์หรือไม่? มิฉะนั้นใส่เพียงสตริงทั้งหมด ...
cleblanc

ไม่มีอินพุต นั่นเป็นเพียง TIO ที่เหลือจากสิ่งอื่นที่ฉันทำ
Xcali

เจ๋งเข้าใจแล้วขอบคุณ
cleblanc

+1 คุณสามารถบันทึกคู่รักโดยใช้การถอดรหัส RLE แต่ฉันไม่สามารถใช้;เป็นตัวคั่นสำหรับs///การทำงานด้วยเหตุผลบางอย่าง บนมือถือไม่สามารถทำอะไรได้มากเกินไป! ลองออนไลน์!
Dom Hastings


1

Python 3, 202 ไบต์

นี่มันแย่มากมันมากกว่าไบต์ที่กำหนดสตริงและการพิมพ์ที่เท่ากัน

print("   .-@@-.")
print("  ("+"="*6+")")
print(" ("+"-"*8+")")
print("("+"="*10+")")
print("("+"_"*10+")")
print(" "+"\/"*5)
print("  "+"\/"*4)
print("   "+"\/"*3)
print("    "+"\/"*2)
print("     \/")

ลองออนไลน์


6
คุณสามารถใช้\nแทนprintงบแยก
Nissa

148 bytesโดยใช้วิธีนี้
Mr. Xcoder

7
ยินดีต้อนรับสู่ PPCG!
AdmBorkBork

1

เยลลี่ , 74 72 ไบต์

5RU⁾\/ẋ
5R×⁶ż¢Y
3,6,8,10,10j1ż“ “.-@@-.¶  (“=“)¶ (“-“)¶(“=“)¶(“_“)¶”P€;¢

ลองออนไลน์!

คำอธิบาย:

5RU⁾\/ẋ    Link 1. Generate list of "\/"s for cone.
5RU        Range 5, reverse. Gets [5,4,3,2,1].
   ⁾\/     Literal string "\/".
      ẋ    Repeat. Gets ["\/\/\/\/\/","\/\/\/\/","\/\/\/","\/\/","\/"].

5R×⁶ż¢Y    Link 2. Generate rest of cone.
5R         Range 5. Gets [1,2,3,4,5].
  ×⁶       Repeat " " that many times. Gets [" ","  ","   ","    ","     "]
    ż¢     Zip that with the ¢ones. Gets a list of alternating space and cones.
      Y    Join with newlines. This puts it all together for the big cone.

3,6,8,10,10j1ż“ “.-@@-.¶  (“=“)¶ (“-“)¶(“=“)¶(“_“)¶”P€;¢    Link 3. Generate the top and put it on the cone.
10,10,8,6j1;1U                                                Generate list 3,1,6,1,8,1,10,1,10. Does this by joining [10,10,8,6] with ones, appending a one, and reversing.
               “   .-@@-.¶  (“=“)¶ (“-“)¶(“=“)¶(“_“)¶”        List of strings. This separates the completed parts from the non completed parts.
              ż                                               Zip 'em together. Gets [number, string, number, string, ...]
                                                      P€      Get the product of €ach. This completes the non completed strings by repeating them.
                                                        ;¢    Attach the ¢one to the end.

1

Mathematica, 117 ไบต์

Column[Join[{".-@@-."},"("<>#<>")"&/@{"="~(T=Table)~6,"-"~T~8,"="~T~10,"_"~T~10},T[""<>T["\/",i],{i,5,1,-1}]],Center]


เอาท์พุท
ป้อนคำอธิบายรูปภาพที่นี่

คุณสามารถทดสอบบนกล่องแบบวุลแฟรม (แม้ว่าแบบอักษรที่พวกเขาใช้อาจทำลายผลลัพธ์เล็กน้อย)


ที่น่าสนใจ\/คือตัวละครพิเศษ ฉันหาสิ่งที่มันใช้ไม่ได้ฉันจึงถาม Mma.SE: mathematica.stackexchange.com/q/200673/61597
lirtosiast




1

C 165 ไบต์

y,x,z;f(){for(puts("   .-@@-.");y++<9;)for(;x=++x%14;)z=y+3-y/4,putchar(x<13?y<5?x-7^z-1?7-x^z?abs(x-7)<z?y<4?y&1?61:45:95:32:40:41:x+y>16|y-x>3?32:x+y&1?92:47:10);}

1

Cubically , 345 336 ไบต์

⇒@@@
RU+30f1+3-00@-2+3@+4@@-4@+2-3@-110@+31-4@@+2-4@+10f1f1-3+0@-400@+31-4@+2-4@+3-10f1f1@@-4+1@-400@+11@+10f1f1f1@-3+0@-400@+11@+4110@f1f1f1-22@-400@+31-4@+220@-43@+43@-43@+43@-43@+43@-43@+43@-43@-4000@+31-4@@+220@-43@+43@-43@+43@-43@+43@-43@-4000@+31-4f1+220@-43@+43@-43@+43@-43@-4000@+31-4f1@+220@-43@+43@-43@-4000@+31-4f1@@+220@-43@

พบได้ผ่านเครื่องมือนี้และเล่นกอล์ฟผ่านการค้นหาและแทนที่ด้วยการปรับแต่งที่กำหนดเองสองสามอย่าง

ลองออนไลน์!


วิธีอื่น:

391 ไบต์ (ไม่ได้แก้ไขคิวบ์)

+5/1+3@@@:1/1+5@5.0+2@@5.0-2@-4@:5/1+3@@:4/1+4@:5+2/1+51@@@@@@:5/1+4@:1/1+1@:5/1+3@:4/1+4@5.05.05.05.05.05.05.05.0:5/1+4@:1/1+1@:4/1+4@:5+2/1+51@@@@@@@@@@:5/1+4@:1/1+1@:4/1+4@:5/1+55@@@@@@@@@@-51@:1/1+1@:5/1+3@:2/1+55@-5@+5@-5@+5@-5@+5@-5@+5@-5@:1/1+1@:5/1+3@@:2/1+55@-5@+5@-5@+5@-5@+5@-5@:1/1+1@:5/1+3@@@:2/1+55@-5@+5@-5@+5@-5@:1/1+1@:5/1+3@@@@:2/1+55@-5@+5@-5@:1/1+1@:5/1+3@@@@@:2/1+55@-5@

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.