Sacame un helado por favor

13

Hazme un cono de helado por favor

Tenemos un montón de excelentes heladerías aquí en Nueva Inglaterra. La mayoría de ellos están cerrados por el invierno ahora, así que ...

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

OBJETIVO Emitir el cono de helado anterior exactamente. (o devolverlo desde una función)

Este es el código de golf, por lo que la respuesta más corta gana

cleblanc
fuente
Esto parece un desafío extraño, ¿no sería simplemente ejecutar eso como un literal de cadena técnicamente una solución para algunos lenguajes interpretados como JS / Python?
Jacob Persi
2
@JacobPersi Este es un desafío clásico de complejidad kolmogorov , donde el objetivo es comprimir la cadena dada tanto como sea posible, la codificación dura probablemente no sea demasiado golfica
Sr. Xcoder
66
@MichaelDorgan muchos de los idiomas se inventaron para el golf de código, pero eso no debería desanimarlo a responder en idiomas de producción; aquí se sugiere votar las respuestas interesantes, y una respuesta iCeCrEaMCoNeno sería una de esas. Este sitio incluso solía tener una regla que no puedes responder en un idioma (/ usar una función) más nuevo que el desafío, pero que fue reemplazado por "no votes respuestas triviales". Después de todo, estos idiomas de golf existen solo por diversión :)
dzaima
3
Entendido. Respondí uno recientemente en Arm Assembler. Obviamente no va a ganar, pero divertido no obstante :)
Michael Dorgan
1
@StevenH. Aquí está la meta publicación : es algo antigua, pero muchos todavía no la han visto
dzaima

Respuestas:

10

SOGL V0.12 , 24 bytes

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

Pruébalo aquí!

Una solución de compresión simple:

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

Versión sin compresión : mucho más tiempo ya que la compresión SOGL funciona bien para esto

dzaima
fuente
8

PowerShell , 85 bytes

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

Pruébalo en línea!

O

PowerShell , 85 bytes

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

Pruébalo en línea!

Elige tu opción. En ambos casos, las primeras tres líneas no tienen suficientes bytes para hacer algún tipo de compresión en PowerShell.

El primer caso usa la multiplicación de cuerdas para producir cada una de las 10 longitudes =y _líneas, mientras que el segundo usa una multiplicación de bucles y cuerdas. En cualquier caso, la última línea forma el cono, haciendo un bucle desde y 1hacia 5cada iteración generando el número apropiado de espacios seguido por el número apropiado de piezas de cono.

Todas esas cadenas quedan en la tubería, y lo implícito Write-Outputen la finalización del programa nos da una nueva línea entre los elementos de forma gratuita.

AdmBorkBork
fuente
7

V , 48 46 bytes

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

Pruébalo en línea!

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

Carbón , 29 bytes

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

Pruébalo en línea! El enlace es a la versión detallada del código. Explicación:

@-.⸿

Imprime la mitad derecha de la primera línea.

E=-=⁺×ι⁺³κ)

Para cada uno de los caracteres =-=, repita 3 veces por primera vez y un tiempo adicional para cada carácter posterior, luego agregue un ), imprimiendo cada resultado en su propia línea.

×_⁵

Imprimir 5 _s.

P↙⁶

Imprime el borde del cono.

)⸿

Imprima el final )y coloque el cursor dentro del cono.

‖M←

Refleja el medio cono.

¤/\

Llena el cuerpo del cono.

Neil
fuente
7

Python 2 , 86 bytes

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

Pruébalo en línea!

Trabajando con la solución de Lynn .

xnor
fuente
-2%n/4es genial :) ¿Busca expresiones como esa manualmente o ejecuta algún tipo de búsqueda de fuerza bruta?
Lynn
1
@ Lynn Corrí un forzador de animales. También hice eso para 35/n*2, que encontró 5*7/n*2ya que no sabe de números multidígitos.
xnor
1
Ohh, eso está bien. ¡Me encantaría ver el código fuente!
Lynn
5

Perl 6 , 115 95 94 92 90 bytes

AlexDaniel guardó 3 bytes en # perl6 en irc.freenode.net

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

Pruébalo en línea!

Luke
fuente
5

05AB1E , 42 bytes

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

Pruébalo en línea!


1026344463000063444446355555 es ahora el número de helado b / c que nadie más lo ha usado.


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 de pulpo mágico
fuente
3

Chicle , 50 bytes

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

Pruébalo en línea!

ovs
fuente
3

C, 171 bytes

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

Pruébalo en línea!

C, 146 bytes

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

Solo imprime la cadena codificada.

Pruébalo en línea!

Steadybox
fuente
1
Se puede hacer mejor que esto ... Yo piensa
cleblanc
2

Python 2 , 125 120 119 116 106 bytes

  • Guardado tres bytes gracias a AdmBorkBork ; golf in range(5,0,~0)a in[5,4,3,2,1].
print"   .-@@-.\n  (======)\n "+"(%s)\n"*3%("-"*8,"="*10,"_"*10),
for _ in 5,4,3,2,1:print" "*(6-_)+_*"\/"

Pruébalo en línea!

Jonathan Frech
fuente
2

Perl 5 , 92 bytes

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

Pruébalo en línea!

Xcali
fuente
¿No necesita contar la entrada para el recuento de bytes? De lo contrario acaba de introducir toda la cadena ...
cleblanc
No hay entrada Eso fue solo un TIO sobrante de algo más que estaba haciendo.
Xcali
genial, lo tengo gracias.
cleblanc
+1. Puede guardar un par usando la decodificación RLE, pero no pude usarlo ;como delimitador por s///trabajar por alguna razón. En el móvil, ¡no puedo hacer nada demasiado! Pruébalo en línea!
Dom Hastings
2

Rubí , 97 bytes

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

Pruébalo en línea!

La primera vez que utilizo Ruby, por lo que los consejos son muy bienvenidos.

Justin Mariner
fuente
1

Python 3, 202 bytes

Esto es bastante terrible, tiene más bytes que solo definir la cadena e imprimir eso incluso.

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

Pruébalo en línea

Ben
fuente
66
Puede usar en \nlugar de printdeclaraciones separadas
Nissa
148 bytes usando este enfoque
Sr. Xcoder
77
Bienvenido a PPCG!
AdmBorkBork
1

Jalea , 74 72 bytes

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

Pruébalo en línea!

Explicación:

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.
Camarada SparklePony
fuente
1

Mathematica, 117 bytes

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


Salidas
ingrese la descripción de la imagen aquí

puedes probarlo en el sandbox de wolfram (aunque las fuentes que usan pueden distorsionar un poco el resultado)

J42161217
fuente
Curiosamente \/es un personaje especial. No pude encontrar para qué se usa para lo que pidió el Mma.SE: mathematica.stackexchange.com/q/200673/61597
lirtosiast
1

C, 138 bytes

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

Pruébalo en línea!

Colera Su
fuente
Sugerir en j=6;--j;puts(""))for(i=7;--i;)printf(&L"⽜ "[i>j]lugar dej=1;++j<7;i=puts(""))for(;i<7;)printf(i++<j?" ":"\\/"
ceilingcat
1

VimL, ​​76 bytes

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

Animado con vimanim.py .

bodqhrohro
fuente
1

C 165 bytes

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
fuente
1

Cúbicamente , 345 336 bytes

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

Encontrado a través de esta herramienta y golf a través de buscar y reemplazar, con un par de optimizaciones personalizadas.

Pruébalo en línea!


Metodo alternativo:

391 bytes (no modifica el cubo)

+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
fuente
1

C (gcc) , 137 136 bytes

-1 bytes gracias a ceilingcat

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

Pruébalo en línea!

cleblanc
fuente