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

Cleblanc
sumber
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

dzaima
sumber
10

Python 2 , 95 byte

i=9;print'   .-@@-.'
while i:print['('+~i*3/4*2%22*'-=_='[i%4]+')','\/'*i][i<6].center(12);i-=1

Cobalah online!

Lynn
sumber
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.

AdmBorkBork
sumber
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       (.-).(.=).(._)
James
sumber
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.

Neil
sumber
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 .

Tidak
sumber
-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!

Luke
sumber
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.
Guci Gurita Ajaib
sumber
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!

ovs
sumber
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!

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

Python 2 , 104 byte

Meminjam trik dari jawaban Jonathan Frech , dan terima kasih padanya karena telah menyelamatkan saya beberapa byte juga.

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

Cobalah online!


Python 2 , 108 byte

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

Cobalah online!

Tuan Xcoder
sumber
2

Python 2 , 125 120 119 116 106 byte

  • Disimpan tiga byte berkat AdmBorkBork ; bermain golf in range(5,0,~0)untuk in[5,4,3,2,1].
print"   .-@@-.\n  (======)\n "+"(%s)\n"*3%("-"*8,"="*10,"_"*10),
for _ in 5,4,3,2,1:print" "*(6-_)+_*"\/"

Cobalah online!

Jonathan Frech
sumber
2

Perl 5 , 92 byte

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

Cobalah online!

Xcali
sumber
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.

Justin Mariner
sumber
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

Ben
sumber
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.
Kamerad SparklePony
sumber
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)

J42161217
sumber
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!

Colera Su
sumber
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 .

bodqhrohro
sumber
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);}
PrincePolka
sumber
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/[email protected]+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/[email protected]: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@
MD XF
sumber
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!

Cleblanc
sumber