Prenez-moi une glace s'il vous plaît

13

Fais moi un cornet de glace s'il te plait

Nous avons une tonne de grands endroits de crème glacée ici en Nouvelle-Angleterre. La plupart d'entre eux sont fermés pour l'hiver maintenant, alors ...

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

OBJECTIF Sortir exactement le cône de glace ci-dessus. (ou renvoyez-le d'une fonction)

C'est le golf de code, donc la réponse la plus courte l'emporte

cleblanc
la source
Cela semble être un défi étrange, ne serait-ce pas simplement exécuter cela comme un littéral de chaîne techniquement une solution pour certains langages interprétés comme JS / Python?
Jacob Persi
2
@JacobPersi Il s'agit d'un défi classique de complexité kolmogorov , où l'objectif est de compresser la chaîne donnée autant que possible, le codage en dur n'est probablement pas trop golfique
M. Xcoder
6
@MichaelDorgan beaucoup de langages ont été inventés pour le golf de code, mais cela ne devrait pas vous décourager de répondre dans les langages de production - ici, il est suggéré de voter positivement des réponses intéressantes, et une réponse iCeCrEaMCoNene serait pas l'une d'entre elles. Ce site avait même l'habitude d'avoir une règle à laquelle vous ne pouvez pas répondre dans une langue (/ utiliser une fonctionnalité) plus récente que le défi, mais qui a été remplacée par "ne pas voter de façon triviale". Après tout, ces langues de golf existent juste pour le plaisir :)
dzaima
3
Compris. J'ai répondu récemment à Arm Assembler. Évidemment, ça ne va pas gagner, mais c'est quand même amusant :)
Michael Dorgan
1
@StevenH. Voici le méta post - il est un peu vieux, mais beaucoup ne l'ont toujours pas vu
dzaima

Réponses:

10

SOGL V0.12 , 24 octets

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

Essayez-le ici!

Une solution de compression simple:

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

Pas de version de compression - beaucoup plus longtemps car la compression SOGL fonctionne bien pour cela

dzaima
la source
10

Python 2 , 95 octets

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

Essayez-le en ligne!

Lynn
la source
8

PowerShell , 85 octets

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

Essayez-le en ligne!

OU

PowerShell , 85 octets

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

Essayez-le en ligne!

Faites votre choix. Dans les deux cas, les trois premières lignes n'ont pas suffisamment d'octets pour effectuer une compression quelconque dans PowerShell.

Le premier cas utilise la multiplication de chaînes pour produire chacune des 10 longueurs =et _lignes, tandis que le second utilise une multiplication de boucles et de chaînes. Dans les deux cas, la dernière ligne forme le cône, en boucle de 1à5 et chaque itération produisant le nombre approprié d'espaces suivi du nombre approprié de morceaux de cône.

Toutes ces chaînes sont laissées sur le pipeline, et l'implicite Write-Outputà la fin du programme nous donne une nouvelle ligne entre les éléments gratuitement.

AdmBorkBork
la source
7

V , 48 46 octets

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

Essayez-le en ligne!

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
la source
7

Fusain , 29 octets

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

Essayez-le en ligne! Le lien est vers la version détaillée du code. Explication:

@-.⸿

Imprimez la moitié droite de la première ligne.

E=-=⁺×ι⁺³κ)

Pour chacun des caractères =-=, répétez 3 fois pour le premier et un temps supplémentaire pour chaque caractère suivant, puis ajoutez un ), imprimant chaque résultat sur sa propre ligne.

×_⁵

Imprimer 5 _s.

P↙⁶

Imprimez le bord du cône.

)⸿

Imprimez la finale )et positionnez le curseur à l'intérieur du cône.

‖M←

Miroir le demi-cône.

¤/\

Remplissez le corps du cône.

Neil
la source
7

Python 2 , 86 octets

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

Essayez-le en ligne!

Travailler sur la solution de Lynn .

xnor
la source
-2%n/4est tellement cool :) Recherchez-vous des expressions comme ça manuellement, ou exécutez-vous une sorte de recherche par force brute?
Lynn
1
@Lynn J'ai dirigé un brutal-forcer. J'ai aussi fait ça pour 35/n*2, ce qu'il a trouvé 5*7/n*2car il ne connaît pas les nombres à plusieurs chiffres.
2017 à 14h18
1
Ohh, c'est bien. J'adorerais voir le code source!
Lynn
5

Perl 6 , 115 95 94 92 90 octets

3 octets enregistrés par AlexDaniel dans # perl6 sur irc.freenode.net

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

Essayez-le en ligne!

Luc
la source
5

05AB1E , 42 octets

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

Essayez-le en ligne!


1026344463000063444446355555 est maintenant le numéro Icecream b / c que personne d'autre ne l'a utilisé.


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.
Urne de poulpe magique
la source
3

Bubblegum , 50 octets

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

Essayez-le en ligne!

ovs
la source
3

C, 171 octets

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

Essayez-le en ligne!

C, 146 octets

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

Imprime simplement la chaîne codée en dur.

Essayez-le en ligne!

Steadybox
la source
1
Vous pouvez faire mieux que cela, je pense ...
cleblanc
2

Python 2 , 125 120 119 119 116 106 octets

  • Enregistré trois octets grâce à AdmBorkBork ; joué in range(5,0,~0)au golf in[5,4,3,2,1].
print"   .-@@-.\n  (======)\n "+"(%s)\n"*3%("-"*8,"="*10,"_"*10),
for _ in 5,4,3,2,1:print" "*(6-_)+_*"\/"

Essayez-le en ligne!

Jonathan Frech
la source
2

Perl 5 , 92 octets

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

Essayez-le en ligne!

Xcali
la source
N'avez-vous pas besoin de compter l'entrée pour le nombre d'octets? Sinon, entrez simplement la chaîne entière ...
cleblanc
Il n'y a aucune entrée. Ce n'était qu'un reste de TIO de quelque chose d'autre que je faisais.
Xcali
cool, j'ai compris.
cleblanc
+1. Vous pouvez enregistrer un couple en utilisant le décodage RLE, mais je n'ai pas pu l'utiliser ;comme délimiteur pour s///travailler pour une raison quelconque. Sur mobile, je ne peux rien faire de trop! Essayez-le en ligne!
Dom Hastings
2

Rubis , 97 octets

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

Essayez-le en ligne!

Première utilisation de Ruby, les conseils sont donc les bienvenus.

Justin Mariner
la source
1

Python 3, 202 octets

C'est assez terrible, c'est plus d'octets que de définir la chaîne et d'imprimer cela même.

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

Essayez-le en ligne

Ben
la source
6
Vous pouvez utiliser \nau lieu de printdéclarations distinctes
Nissa
148 octets en utilisant cette approche
M. Xcoder
7
Bienvenue chez PPCG!
AdmBorkBork du
1

Gelée , 74 72 octets

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

Essayez-le en ligne!

Explication:

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.
Camarade SparklePony
la source
1

Mathematica, 117 octets

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


Les sorties
enter image description here

vous pouvez le tester sur sandbox wolfram (bien que les polices qu'ils utilisent peuvent fausser un peu le résultat)

J42161217
la source
Fait intéressant, \/un caractère spécial. Je n'ai pas trouvé à quoi il sert, j'ai donc demandé sur Mma.SE: mathematica.stackexchange.com/q/200673/61597
lirtosiast
1

C, 138 octets

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

Essayez-le en ligne!

Colera Su
la source
Suggérer à la j=6;--j;puts(""))for(i=7;--i;)printf(&L"⽜ "[i>j]place dej=1;++j<7;i=puts(""))for(;i<7;)printf(i++<j?" ":"\\/"
plafondcat
1

VimL, ​​76 octets

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

Animé avec vimanim.py .

bodqhrohro
la source
1

C 165 octets

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
la source
1

Cubiquement , 345 336 octets

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

Trouvé via cet outil et joué via la recherche et remplacement, avec quelques optimisations personnalisées.

Essayez-le en ligne!


Méthode alternative:

391 octets (ne modifie pas le cube)

+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
la source
1

C (gcc) , 137 136 octets

-1 octets grâce au plafond

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

Essayez-le en ligne!

cleblanc
la source