Tolong ambili aku es krim


13

Tolong buatkan saya kerucut es krim

Kami memiliki banyak tempat es krim di sini di New England. Sebagian besar dari mereka ditutup untuk musim dingin sekarang, jadi ...

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

TUJUAN Menghasilkan kerucut icecream di atas dengan tepat. (atau mengembalikannya dari suatu fungsi)

Ini kode golf sehingga jawaban terpendek menang


Ini sepertinya tantangan yang aneh, bukankah hanya mengeksekusi sebagai string literal secara teknis menjadi solusi untuk beberapa bahasa yang ditafsirkan seperti JS / Python?
Jacob Persi

2
@JacobPersi Ini adalah tantangan kolmogorov-kompleksitas klasik , di mana tujuannya adalah untuk mengompresi string yang diberikan sebanyak mungkin, hardcoding mungkin tidak terlalu golf
Tn. Xcoder

6
@MichaelDorgan banyak bahasa yang diciptakan untuk kode golf, tapi yang seharusnya tidak mencegah Anda dari menjawab dalam bahasa produksi - sini itu disarankan untuk upvote jawaban yang menarik, dan jawaban dalam iCeCrEaMCoNetidak akan menjadi salah satu dari mereka. Situs ini bahkan dulunya memiliki aturan bahwa Anda tidak dapat menjawab dalam bahasa (/ menggunakan fitur) yang lebih baru daripada tantangannya, tetapi itu diganti dengan "jangan undur-undur jawaban sepele". Lagipula, bahasa-bahasa golf ini ada hanya untuk bersenang-senang :)
dzaima

3
Dimengerti Saya menjawab satu baru-baru ini di Arm Assembler. Jelas tidak akan menang, tapi tidak ada yang menyenangkan :)
Michael Dorgan

1
@ SevenH. Inilah pos meta - ini agak tua, tetapi banyak yang belum melihatnya
dzaima

Jawaban:


10

SOGL V0.12 , 24 byte

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

Coba Di Sini!

Solusi kompresi sederhana:

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

Tidak ada versi kompresi - lebih lama karena kompresi SOGL bekerja dengan baik untuk ini



8

PowerShell , 85 byte

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

Cobalah online!

ATAU

PowerShell , 85 byte

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

Cobalah online!

Ambil pilihanmu. Dalam kedua kasus, tiga baris pertama tidak memiliki cukup byte untuk melakukan kompresi di PowerShell.

Kasus pertama menggunakan perkalian string untuk menghasilkan masing-masing dari 10-panjang =dan _garis, sedangkan yang kedua menggunakan perkalian loop dan string. Dalam kedua kasus, baris terakhir membentuk kerucut, berputar dari 1ke5 dan setiap iterasi menghasilkan jumlah ruang yang tepat diikuti oleh jumlah potongan kerucut yang sesuai.

Semua string tersebut ditinggalkan di jalur pipa, dan implisit Write-Outputpada penyelesaian program memberi kita garis baru antara elemen gratis.


7

V , 48 46 byte

i\/5ñ>GÄXa/\ñS³ .-@@-.
  (¶=)
 (¸-)
(±=)
(±_)

Cobalah online!

Hexdump:

00000000: 695c 2f1b 35f1 3e47 c458 612f 5cf1 53b3  i\/.5.>G.Xa/\.S.
00000010: 202e 2d40 402d 2e0a 2020 28b6 3d29 0a20   .-@@-..  (.=). 
00000020: 28b8 2d29 0a28 b13d 290a 28b1 5f29       (.-).(.=).(._)

7

Arang , 29 byte

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

Cobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan:

@-.⸿

Cetak separuh kanan dari baris pertama.

E=-=⁺×ι⁺³κ)

Untuk masing-masing karakter =-=, ulangi 3 kali untuk yang pertama dan waktu tambahan untuk setiap karakter berikutnya, lalu tambahkan a ), mencetak setiap hasil pada barisnya sendiri.

×_⁵

Cetak 5 _s.

P↙⁶

Cetak tepi kerucut.

)⸿

Cetak akhir )dan posisikan kursor di dalam kerucut.

‖M←

Cermin setengah kerucut.

¤/\

Isi tubuh kerucut.


7

Python 2 , 86 byte

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

Cobalah online!

Bekerja off solusi Lynn .


-2%n/4sangat keren :) Apakah Anda mencari ekspresi seperti itu secara manual, atau menjalankan semacam pencarian brute force?
Lynn

1
@ Lynn saya menjalankan brute-forcer. Saya juga melakukannya untuk 35/n*2, yang ditemukan 5*7/n*2karena tidak tahu nomor multidigit.
xnor

1
Ohh, itu rapi. Saya akan senang melihat kode sumber!
Lynn

5

Perl 6 , 115 95 94 92 90 byte

3 byte disimpan oleh AlexDaniel di # perl6 di irc.freenode.net

say "   .-@@-.
  (======)
 (--------)
({"="x 10})
({"_"x 10})";say(' 'x++$,'\/'x$--+5)xx 5

Cobalah online!


5

05AB1E , 42 byte

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

Cobalah online!


1026344463000063444446355555 sekarang adalah Nomor Icecream b / c tidak ada orang lain yang menggunakannya.


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

Bubblegum , 50 byte

00000000: 5350 50d0 d375 70d0 d5e3 5250 d0b0 0503  SPP..up...RP....
00000010: 4d2e 050d 5d28 d0e4 020b c224 34e2 e100  M...](.....$4...
00000020: a82a 461f 0681 9a91 980a 0896 0284 0161  .*F............a
00000030: 0100                                     ..

Cobalah online!


3

C, 171 byte

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);}

Cobalah online!

C, 146 byte

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

Hanya mencetak string hardcoded.

Cobalah online!


1
Anda dapat melakukan lebih baik dari ini yang saya kira ...
cleblanc




2

Perl 5 , 92 byte

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

Cobalah online!


Apakah Anda tidak perlu menghitung input menuju jumlah byte? Jika tidak, cukup masukkan seluruh string ...
cleblanc

Tidak ada input. Itu hanya sisa TIO dari hal lain yang saya lakukan.
Xcali

keren, terima kasih.
cleblanc

+1. Anda dapat menyimpan pasangan menggunakan decoding RLE, tetapi saya tidak bisa menggunakan ;sebagai pembatas untuk s///bekerja karena suatu alasan. Di ponsel, jadi tidak bisa melakukan apa-apa terlalu banyak! Cobalah online!
Dom Hastings

2

Ruby , 97 byte

i=-1
puts ['   .-@@-.']+123455543.digits.map{|n|(i+=1;i<4?"(#{'=-=_'[i]*n*2})":'\/'*n).center 12}

Cobalah online!

Pertama kali menggunakan Ruby, jadi tipsnya sangat welcome.


1

Python 3, 202 byte

Ini cukup mengerikan, lebih banyak byte daripada hanya mendefinisikan string dan mencetaknya.

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

Cobalah secara Online


6
Anda dapat menggunakan \nalih-alih printpernyataan terpisah
Nissa

148 byte menggunakan pendekatan ini
Tn. Xcoder

7
Selamat datang di PPCG!
AdmBorkBork

1

Jelly , 74 72 byte

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

Cobalah online!

Penjelasan:

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 byte

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


Keluaran
masukkan deskripsi gambar di sini

Anda dapat mengujinya di wolfram sandbox (meskipun font yang mereka gunakan dapat merusak hasilnya sedikit)


Menariknya \/adalah karakter khusus. Saya tidak dapat menemukan apa yang digunakan untuk itu jadi saya bertanya pada Mma.SE: Mathematica.stackexchange.com/q/200673/61597
lirtosiast


1

C, 138 byte

f(i,j){puts("   .-@@-.\n  (======)\n (--------)\n(==========)\n(__________)");for(j=1;++j<7;i=puts(""))for(;i<7;)printf(i++<j?" ":"\\/");}

Cobalah online!


Sarankan j=6;--j;puts(""))for(i=7;--i;)printf(&L"⽜ "[i>j]alih-alihj=1;++j<7;i=puts(""))for(;i<7;)printf(i++<j?" ":"\\/"
ceilingcat

1

VimL, ​​76 byte

a   .-@@-.␤  ␤ ␛k6A=␛j8A-␛o␛10A=␛o␛10A_␛qaI(␛A)␛kq3@aGo ␛5A\/␛qayypxxI ␛q3@a

Animasi dengan vimanim.py .


1

C 165 byte

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

Secara kubik , 345 336 byte

⇒@@@
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@

Ditemukan melalui alat ini dan bermain golf melalui pencarian-dan-ganti, dengan beberapa optimasi kustom.

Cobalah online!


Metode alternatif:

391 byte (tidak memodifikasi kubus)

+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@

1

C (gcc) , 137 136 byte

-1 bytes berkat ceilingcat

main(i){for(puts("   .-@@-.\n  (======)\n (--------)\n(==========)\n(__________)");8<printf("%*c%s\n",++i,92,"/\\/\\/\\/\\/\\/"+i*2););}

Cobalah online!

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.