Schaufel mir bitte ein Eis


13

Mach mir bitte eine Eistüte

Wir haben eine Menge großartiger Eisdielen hier in Neuengland. Die meisten von ihnen sind jetzt für den Winter geschlossen, so ...

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

ZIEL Den obigen Eistüte genau ausgeben. (oder von einer Funktion zurückgeben)

Dies ist Codegolf, also gewinnt die kürzeste Antwort


Dies scheint eine seltsame Herausforderung zu sein, wäre es nicht einfach eine Lösung für einige interpretierte Sprachen wie JS / Python, dies als String-Literal auszuführen?
Jacob Persi

2
@JacobPersi Dies ist eine klassische Herausforderung der Kolmogorov-Komplexität , bei der das Ziel darin besteht, die angegebene Zeichenfolge so weit wie möglich zu komprimieren. Die Hardcodierung ist wahrscheinlich nicht zu golfig
Mr. Xcoder,

6
@MichaelDorgan Viele der Sprachen wurden für Codegolf erfunden, aber das sollte Sie nicht davon abhalten, in Produktionssprachen zu antworten. Hier wird empfohlen, interessante Antworten zu verbessern, und eine Antwort in iCeCrEaMCoNewäre keine von diesen. Diese Seite hatte sogar die Regel, dass man nicht in einer Sprache antworten kann (/ benutze ein Feature), die neuer ist als die Herausforderung, aber dies wurde ersetzt durch "Keine belanglosen Antworten". Immerhin gibt es diese
Golfsprachen

3
Verstanden. Ich antwortete vor kurzem in Arm Assembler. Offensichtlich nicht gewinnen, aber trotzdem Spaß :)
Michael Dorgan

1
@StevenH. Hier ist der Meta-Post - er ist etwas alt, aber viele haben ihn noch nicht gesehen
dzaima,

Antworten:


10

SOGL V0.12 , 24 Bytes

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

Probieren Sie es hier aus!

Eine einfache Komprimierungslösung:

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

Keine Komprimierungsversion - viel länger, da die SOGL-Komprimierung dafür gut funktioniert



8

PowerShell , 85 Byte

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

Probieren Sie es online!

ODER

PowerShell , 85 Byte

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

Probieren Sie es online!

Treffen Sie Ihre Wahl. In beiden Fällen verfügen die ersten drei Zeilen nicht über genügend Bytes, um eine Komprimierung in PowerShell durchzuführen.

Der erste Fall verwendet die String-Multiplikation, um jede der 10 Längen =und _Zeilen zu erzeugen , während der zweite Fall eine Loop- und String-Multiplikation verwendet. In beiden Fällen bildet die letzte Zeile den Kegel, der von 1bis umläuft5 jedem Durchlauf wird die entsprechende Anzahl von Leerzeichen gefolgt von der entsprechenden Anzahl von Kegelstücken ausgegeben.

Alle diese Zeichenfolgen Write-Outputverbleiben in der Pipeline, und der implizite Zeitpunkt der Programmbeendigung gibt uns kostenlos eine neue Zeile zwischen den Elementen.


7

V , 48 46 Bytes

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

Probieren Sie es 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

Kohle , 29 Bytes

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

Probieren Sie es online! Link ist eine ausführliche Version des Codes. Erläuterung:

@-.⸿

Drucken Sie die rechte Hälfte der ersten Zeile.

E=-=⁺×ι⁺³κ)

=-=Wiederholen Sie für jedes der Zeichen 3 Mal für das erste und ein weiteres Mal für jedes nachfolgende Zeichen und hängen Sie dann ein an ), wobei Sie jedes Ergebnis in einer eigenen Zeile ausgeben .

×_⁵

5 _s drucken .

P↙⁶

Drucken Sie den Rand des Kegels.

)⸿

Drucken Sie das Finale )und positionieren Sie den Cursor innerhalb des Kegels.

‖M←

Den halben Kegel spiegeln.

¤/\

Füllen Sie den Körper des Kegels.


7

Python 2 , 86 Bytes

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

Probieren Sie es online!

Wir arbeiten an Lynns Lösung .


-2%n/4is so cool :) Suchst du manuell nach solchen Ausdrücken oder machst du eine Art Brute-Force-Suche?
Lynn

1
@Lynn Ich habe einen Brute-Forcer geführt. Ich habe auch das gemacht 35/n*2, wofür es gefunden hat, 5*7/n*2da es keine mehrstelligen Zahlen kennt.
xnor 18.11.17

1
Ohh, das ist ordentlich. Ich würde gerne den Quellcode sehen!
Lynn

5

Perl 6 , 115 95 94 92 90 Bytes

3 Bytes von AlexDaniel in # perl6 auf irc.freenode.net gespeichert

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

Probieren Sie es online!


5

05AB1E , 42 Bytes

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

Probieren Sie es online!


1026344463000063444446355555 ist jetzt die Icecream Number b / c, die noch niemand benutzt hat.


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

Probieren Sie es online!


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

Probieren Sie es online!

C 146 Bytes

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

Druckt einfach die fest codierte Zeichenfolge.

Probieren Sie es online!


1
Sie können es besser machen, denke ich ...
Cleblanc




2

Perl 5 , 92 Bytes

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

Probieren Sie es online!


Müssen Sie die Eingabe nicht auf die Byteanzahl angerechnet werden? Ansonsten geben Sie einfach die gesamte Zeichenfolge ein ...
cleblanc

Es erfolgt keine Eingabe. Das war nur ein TIO-Überbleibsel von etwas anderem, was ich tat.
Xcali

cool, habe es danke.
Cleblanc

+1. Sie können ein paar mit RLE-Decodierung speichern, aber ich konnte aus irgendeinem Grund nicht ;als Begrenzer für die s///Arbeit verwenden. Auf dem Handy kann man also nicht zu viel machen! Probieren Sie es online!
Dom Hastings


1

Python 3, 202 Bytes

Das ist ziemlich schrecklich, es sind mehr Bytes als nur die Zeichenfolge zu definieren und diese sogar zu drucken.

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

Probieren Sie es online


6
Sie können \nanstelle von separaten printAnweisungen verwenden
Nissa

148 Bytes mit diesem Ansatz
Mr. Xcoder

7
Willkommen bei PPCG!
AdmBorkBork

1

Jelly , 74 72 Bytes

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

Probieren Sie es online!

Erläuterung:

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 Bytes

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


Ausgänge
Bildbeschreibung hier eingeben

Sie können es auf einer Wolfram-Sandbox testen (obwohl die verwendeten Schriftarten das Ergebnis ein wenig verfälschen können).


Interessanterweise \/ist ein besonderer Charakter. Ich konnte nicht finden, wofür es verwendet wird, also fragte ich bei 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?" ":"\\/");}

Probieren Sie es online!


Schlagen Sie j=6;--j;puts(""))for(i=7;--i;)printf(&L"⽜ "[i>j]stattdessen vorj=1;++j<7;i=puts(""))for(;i<7;)printf(i++<j?" ":"\\/"
ceilingcat


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

1

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

Über dieses Tool gefunden und per Suchen und Ersetzen mit einigen benutzerdefinierten Optimierungen abgegolft.

Probieren Sie es online!


Alternative Methode:

391 Bytes (Würfel wird nicht geändert)

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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.