Zdobądź dla mnie lody

13

Zrób mi lody

Mamy mnóstwo wspaniałych lodów w Nowej Anglii. Większość z nich jest teraz zamknięta na zimę, więc ...

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

CEL Wyjście dokładnie z powyższego stożka lodów. (lub zwróć go z funkcji)

To jest golf golfowy, więc wygrywa najkrótsza odpowiedź

cleblanc
źródło
Wydaje się to dziwnym wyzwaniem, czy zwykłe wykonanie tego jako literału ciągu nie byłoby rozwiązaniem dla niektórych interpretowanych języków, takich jak JS / Python?
Jacob Persi,
2
@JacobPersi Jest to klasyczne wyzwanie złożoności Kołmogorowa , w którym celem jest maksymalne skompresowanie podanego ciągu, kodowanie nie jest prawdopodobnie zbyt golfowe
Pan Xcoder
6
@MichaelDorgan wiele języków zostało wymyślonych do gry w golfa kodowego, ale nie powinno to zniechęcać do udzielania odpowiedzi w językach produkcyjnych - tutaj zaleca się głosowanie ciekawych odpowiedzi, a odpowiedź w nich iCeCrEaMCoNenie byłaby jedną z nich. W tej witrynie obowiązywała nawet reguła, że ​​nie można odpowiedzieć w języku (/ użyj funkcji) nowszym niż wyzwanie, ale zastąpiono ją „nie głosuj na trywialne odpowiedzi”. W końcu te języki gry w golfa istnieją tylko dla zabawy :)
dzaima
3
Zrozumiany. Odpowiedziałem ostatnio na Arm Assembler. Oczywiście nie wygra, ale i tak będzie fajnie :)
Michael Dorgan
1
@StevenH. Oto meta post - jest nieco stary, ale wielu wciąż go nie widział
dzaima,

Odpowiedzi:

10

SOGL V0.12 , 24 bajty

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

Wypróbuj tutaj!

Proste rozwiązanie kompresji:

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

Brak wersji kompresji - znacznie dłużej, ponieważ kompresja SOGL działa w tym przypadku dobrze

dzaima
źródło
10

Python 2 , 95 bajtów

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

Wypróbuj online!

Lynn
źródło
8

PowerShell , 85 bajtów

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

Wypróbuj online!

LUB

PowerShell , 85 bajtów

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

Wypróbuj online!

Wybierz swój. W obu przypadkach pierwsze trzy wiersze nie mają wystarczającej liczby bajtów, aby wykonać jakąkolwiek kompresję w programie PowerShell.

Pierwszy przypadek wykorzystuje mnożenie ciągów do wytworzenia każdej z 10 długości =i _linii, podczas gdy drugi wykorzystuje mnożenie pętli i ciągów. W obu przypadkach ostatnia linia tworzy stożek, zapętlając od 1do 5i każdej iteracji, generując odpowiednią liczbę spacji, a następnie odpowiednią liczbę kawałków stożka.

Wszystkie te ciągi są pozostawione w potoku, a domniemane Write-Outputpo zakończeniu programu daje nam nową linię między elementami za darmo.

AdmBorkBork
źródło
7

V , 48 46 bajtów

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

Wypróbuj 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
źródło
7

Węgiel drzewny , 29 bajtów

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

Wypróbuj online! Link jest do pełnej wersji kodu. Wyjaśnienie:

@-.⸿

Wydrukuj prawą połowę pierwszego wiersza.

E=-=⁺×ι⁺³κ)

Dla każdego ze znaków =-=powtórz 3 razy dla pierwszego i dodatkowy czas dla każdego kolejnego znaku, a następnie dodaj a ), drukując każdy wynik w osobnej linii.

×_⁵

Drukuj 5 _s.

P↙⁶

Wydrukuj krawędź stożka.

)⸿

Wydrukuj finał )i umieść kursor wewnątrz stożka.

‖M←

Odbić lustro pół stożka.

¤/\

Wypełnij korpus stożka.

Neil
źródło
7

Python 2 , 86 bajtów

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

Wypróbuj online!

Praca z rozwiązaniem Lynn .

xnor
źródło
-2%n/4jest takie fajne :) Czy wyszukujesz takie wyrażenia ręcznie, czy przeprowadzasz wyszukiwanie typu brute force?
Lynn,
1
@ Lynn prowadziłem brutal-forcer. Zrobiłem to również dla 35/n*2, które znalazło, 5*7/n*2ponieważ nie zna numerów wielocyfrowych.
xnor
1
Och, to fajnie. Chciałbym zobaczyć kod źródłowy!
Lynn,
5

Perl 6 , 115 95 94 92 90 bajtów

3 bajty zapisane przez AlexDaniela w # perl6 na irc.freenode.net

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

Wypróbuj online!

Łukasz
źródło
5

05AB1E , 42 bajty

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

Wypróbuj online!


1026344463000063444446355555 jest teraz numerem lody b / c nikt inny go nie używał.


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.
Urna Magicznej Ośmiornicy
źródło
3

Bubblegum , 50 bajtów

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

Wypróbuj online!

ovs
źródło
3

C, 171 bajtów

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

Wypróbuj online!

C, 146 bajtów

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

Po prostu drukuje zakodowany ciąg.

Wypróbuj online!

Steadybox
źródło
1
Myślę, że możesz to zrobić lepiej ...
cleblanc
2

Python 2 , 104 bajty

Pożyczył lewę z odpowiedzi Jonathana Frecha i dziękuję mu za uratowanie mi także kilku bajtów.

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

Wypróbuj online!


Python 2 , 108 bajtów

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

Wypróbuj online!

Pan Xcoder
źródło
2

Python 2 , 125 120 119 116 106 bajtów

  • Zaoszczędzono trzy bajty dzięki AdmBorkBork ; grał in range(5,0,~0)w golfa in[5,4,3,2,1].
print"   .-@@-.\n  (======)\n "+"(%s)\n"*3%("-"*8,"="*10,"_"*10),
for _ in 5,4,3,2,1:print" "*(6-_)+_*"\/"

Wypróbuj online!

Jonathan Frech
źródło
2

Perl 5 , 92 bajtów

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

Wypróbuj online!

Xcali
źródło
Czy nie musisz liczyć danych wejściowych do liczby bajtów? W przeciwnym razie po prostu wprowadź cały ciąg ...
cleblanc
Brak danych wejściowych. To było tylko TIO pozostawione z czegoś innego, co robiłem.
Xcali,
spoko, rozumiem dzięki.
cleblanc
+1. Możesz zapisać parę za pomocą dekodowania RLE, ale nie mogłem użyć ;jako separatora do s///pracy z jakiegoś powodu. Na telefonie komórkowym, więc nie mogę nic więcej zrobić! Wypróbuj online!
Dom Hastings,
2

Ruby , 97 bajtów

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

Wypróbuj online!

Pierwszy raz korzystam z Ruby, więc wskazówki są bardzo mile widziane.

Justin Mariner
źródło
1

Python 3, 202 bajty

Jest to dość okropne, ponieważ ma więcej bajtów niż samo zdefiniowanie łańcucha i wydrukowanie go.

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

Wypróbuj online

Ben
źródło
6
\nZamiast osobnych printinstrukcji możesz użyć
Nissa,
148 bajtów przy użyciu tego podejścia
Pan Xcoder,
7
Witamy w PPCG!
AdmBorkBork,
1

Galaretka , 74 72 bajty

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

Wypróbuj online!

Wyjaśnienie:

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.
Towarzyszu SparklePony
źródło
1

Mathematica, 117 bajtów

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


Wyjścia
wprowadź opis zdjęcia tutaj

możesz to przetestować na piaskownicy wolfram (chociaż używane czcionki mogą nieco zniekształcić wynik)

J42161217
źródło
Co ciekawe, \/jest postacią specjalną. Nie mogłem znaleźć do czego służy, więc zapytałem na Mma.SE: mathematica.stackexchange.com/q/200673/61597
lirtosiast
1

Pyth, 58 bajtów

jm.[12@,*d"\/"@,".-@@-."j@*Vj11494 11"-=_="d"()"ndTgd6;_ST

Zobacz w akcji !

Steven H.
źródło
1

C, 138 bajtów

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

Wypróbuj online!

Colera Su
źródło
Zaproponuj j=6;--j;puts(""))for(i=7;--i;)printf(&L"⽜ "[i>j]zamiastj=1;++j<7;i=puts(""))for(;i<7;)printf(i++<j?" ":"\\/"
ceilingcat
1

VimL, ​​76 bajtów

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

Animowane z vimanim.py .

bodqhrohro
źródło
1

C 165 bajtów

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
źródło
1

Kubiczną , 345 336 bajtów

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

Znalezione za pomocą tego narzędzia i poddane golfowi poprzez wyszukiwanie i zamianę, z kilkoma niestandardowymi optymalizacjami.

Wypróbuj online!


Metoda alternatywna:

391 bajtów (nie modyfikuje kostki)

+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
źródło
1

C (gcc) , 137 136 bajtów

-1 bajty dzięki pułapkowi cat

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

Wypróbuj online!

cleblanc
źródło