Fammi un gelato per favore


13

Fammi un cono gelato per favore

Abbiamo un sacco di ottimi posti di gelato qui nel New England. Molti di loro sono chiusi per l'inverno, quindi ...

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

OBIETTIVO Emettere esattamente il cono gelato sopra. (o restituirlo da una funzione)

Questo è il codice golf, quindi vince la risposta più breve


Sembra una strana sfida, semplicemente eseguirla come una stringa letteralmente tecnicamente non sarebbe una soluzione per alcuni linguaggi interpretati come JS / Python?
Jacob Persi,

2
@JacobPersi Questa è una classica sfida alla complessità del kolmogorov , in cui l'obiettivo è comprimere il più possibile la stringa data, l'hardcoding probabilmente non è troppo da golf
Mr. Xcoder,

6
@MichaelDorgan molte delle lingue sono state inventate per il golf del codice, ma ciò non dovrebbe scoraggiarti dal rispondere in linguaggi di produzione - qui si suggerisce di votare risposte interessanti e una risposta iCeCrEaMCoNenon sarebbe una di quelle. Questo sito aveva anche una regola a cui non puoi rispondere in una lingua (/ utilizzare una funzione) più recente della sfida, ma che è stata sostituita da "non votare risposte banali". Dopotutto, questi linguaggi del golf esistono solo per divertimento :)
dzaima,

3
Inteso. Ne ho risposto uno di recente in Arm Assembler. Ovviamente non vincerò, ma divertiremo comunque :)
Michael Dorgan,

1
@StevenH. Ecco il meta post - è un po 'vecchio, ma molti non l'hanno ancora visto
dzaima,

Risposte:


10

SOGL V0.12 , 24 byte

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

Provalo qui!

Una semplice soluzione di compressione:

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

Nessuna versione di compressione - molto più a lungo poiché la compressione SOGL funziona bene per questo



8

PowerShell , 85 byte

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

Provalo online!

O

PowerShell , 85 byte

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

Provalo online!

Fai la tua scelta. In entrambi i casi, le prime tre righe non hanno abbastanza byte per eseguire alcun tipo di compressione in PowerShell.

Il primo caso utilizza la moltiplicazione di stringhe per produrre ciascuna delle 10 lunghezze =e delle _linee, mentre il secondo utilizza una moltiplicazione di loop e stringhe. In entrambi i casi, l'ultima riga forma il cono, passando da 1a5 e ogni iterazione producendo il numero appropriato di spazi seguito dal numero appropriato di pezzi del cono.

Tutte queste stringhe vengono lasciate sulla pipeline e l'implicito Write-Outputal completamento del programma ci fornisce una nuova linea tra gli elementi gratuitamente.


7

V , 48 46 byte

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

Provalo 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

Carbone , 29 byte

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

Provalo online! Il collegamento è alla versione dettagliata del codice. Spiegazione:

@-.⸿

Stampa la metà destra della prima riga.

E=-=⁺×ι⁺³κ)

Per ciascuno dei personaggi =-=, ripetere 3 volte per il primo e un ulteriore tempo per ciascun carattere successivo, quindi aggiungere un ), stampando ciascun risultato sulla propria riga.

×_⁵

Stampa 5 _s.

P↙⁶

Stampa il bordo del cono.

)⸿

Stampa la finale )e posiziona il cursore all'interno del cono.

‖M←

Specchia il mezzo cono.

¤/\

Riempi il corpo del cono.


7

Python 2 , 86 byte

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

Provalo online!

Lavorare fuori la soluzione di Lynn .


-2%n/4è così bello :) Cerchi espressioni come quelle manualmente o esegui una sorta di ricerca della forza bruta?
Lynn,

1
@Lynn gestivo un bruto-forcer. L'ho fatto anche per quello 35/n*2, che ha trovato come 5*7/n*2dato che non conosce numeri a più cifre.
xnor

1
Ohh, è pulito. Mi piacerebbe vedere il codice sorgente!
Lynn,

5

Perl 6 , 115 95 94 92 90 byte

3 byte salvati da AlexDaniel in # perl6 su irc.freenode.net

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

Provalo online!


5

05AB1E , 42 byte

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

Provalo online!


1026344463000063444446355555 ora è il numero di gelato b / c che nessun altro lo ha usato.


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

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

Provalo online!

C, 146 byte

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

Stampa solo la stringa codificata.

Provalo online!


1
Puoi fare di meglio di questo credo ...
Cleblanc,




2

Perl 5 , 92 byte

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

Provalo online!


Non è necessario contare l'ingresso per il conteggio dei byte? Altrimenti inserisci solo l'intera stringa ...
cleblanc,

Non ci sono input. Era solo un residuo di TIO di qualcos'altro che stavo facendo.
Xcali,

bello, capito grazie.
Cleblanc,

+1. Puoi salvare un paio usando la decodifica RLE, ma non ho potuto usare ;come delimitatore per s///lavorare per qualche motivo. Sui dispositivi mobili, quindi non posso fare troppo! Provalo online!
Dom Hastings,

2

Rubino , 97 byte

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

Provalo online!

La prima volta che usi Ruby, quindi i suggerimenti sono i benvenuti.


1

Python 3, 202 byte

Questo è piuttosto terribile, è più byte che semplicemente definire la stringa e stamparlo anche.

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

Provalo online


6
È possibile utilizzare \ninvece di printdichiarazioni separate
Nissa

148 byte usando questo approccio
Mr. Xcoder,

7
Benvenuti in PPCG!
AdmBorkBork,

1

Gelatina , 74 72 byte

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

Provalo online!

Spiegazione:

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]


Uscite
enter image description here

puoi provarlo sulla sandbox di wolfram (anche se i caratteri che usano possono distorcere leggermente il risultato)


È interessante notare che \/è un personaggio speciale. Non riuscivo a trovare a cosa servisse, quindi ho chiesto su 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?" ":"\\/");}

Provalo online!


Suggerisci j=6;--j;puts(""))for(i=7;--i;)printf(&L"⽜ "[i>j]invece dij=1;++j<7;i=puts(""))for(;i<7;)printf(i++<j?" ":"\\/"
ceilingcat il

1

VimL, ​​76 byte

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

Animato con 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

Cubicamente , 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@

Trovato tramite questo strumento e giocato a golf tramite ricerca e sostituzione, con un paio di ottimizzazioni personalizzate.

Provalo online!


Metodo alternativo:

391 byte (non modifica il cubo)

+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 byte grazie a ceilingcat

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

Provalo online!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.