アイスクリームをすくってください


13

私をアイスクリームコーンにしてください

ここニューイングランドにはたくさんの素晴らしいアイスクリーム店があります。それらのほとんどは今冬のために閉じられているので...

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

目標 上記のアイスクリームコーンを正確に出力します。(または関数から返す)

これはコードゴルフなので、最短の回答が勝ちます


これは奇妙な挑戦のように思えますが、文字列リテラルとして単純に実行することは、JS / Pythonのような一部のインタープリタ言語の解決策ではありませんか?
ジェイコブペルシ

2
@JacobPersiこれは古典的ですコルモゴロフ複雑度の目的はできるだけ与えられた文字列を圧縮するために、ハードコーディングはおそらくあまりにもgolfyではありません挑戦、
氏Xcoder

6
@MichaelDorgan多くの言語コードゴルフ用発明されましたが、それは実稼働言語での回答を妨げるものではありません。ここでは、興味深い回答を支持することを提案しiCeCrEaMCoNeます。このサイトには、チャレンジよりも新しい言語(/機能を使用)では答えられないというルールがありましたが、「些細な答えを支持しない」に置き換えられました。結局のところ、これらのゴルフ言語はただの楽しみのために存在しています:)
dzaima

3
わかった。私は最近Arm Assemblerで答えました。明らかに勝つつもりはないが、それでも楽しい:)
マイケルダーガン

1
@stevenH。ここでメタポストだ -それはやや古いですが、多くはまだそれを見ていない
dzaima

回答:




8

PowerShell、85バイト

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

オンラインでお試しください!

または

PowerShell、85バイト

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

オンラインでお試しください!

好きなのを選びな。どちらの場合も、最初の3行には、PowerShellで何らかの圧縮を行うのに十分なバイトがありません。

最初のケースは文字列の乗算を使用して10の長さ=_行のそれぞれを生成し、2番目のケースはループと文字列の乗算を使用します。どちらの場合でも、最後の行はコーンを形成し、1to からループし5、各反復は適切な数のスペースに続いて適切な数のコーン片を出力します。

これらの文字列はすべてパイプラインに残されており、Write-Outputプログラムの完了時に暗黙的に要素間の改行が無料で提供されます。


7

V48 46バイト

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

オンラインでお試しください!

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

、29バイト

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

オンラインでお試しください!リンクは、コードの詳細バージョンです。説明:

@-.⸿

最初の行の右半分を印刷します。

E=-=⁺×ι⁺³κ)

各文字=-=について、最初の文字を3回繰り返し、後続の各文字について追加の時間を繰り返してから、を追加して)、各結果を独自の行に出力します。

×_⁵

5 _秒印刷します。

P↙⁶

円錐の端を印刷します。

)⸿

最終版を印刷し)、コーン内にカーソルを置きます。

‖M←

ハーフコーンをミラーリングします。

¤/\

コーンの本体を満たします。


7

Python 2、86バイト

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

オンラインでお試しください!

離れて働いリンのソリューション


-2%n/4とてもクールです:)そのような式を手動で検索しますか、それとも何らかのブルートフォース検索を実行しますか?
リン

1
@Lynn私は総当たり攻撃を実行しました。私も35/n*2それをしました5*7/n*2、それはマルチディジットの数字を知らないので見つけました。
-xnor

1
ああ、それはきちんとしている。私はソースコードを見たいです!
リン


5

05AB1E、42バイト

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

オンラインでお試しください!


1026344463000063444446355555は、アイスクリーム番号b / cになり、誰も使用していません。


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

C、171バイト

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

オンラインでお試しください!

C、146バイト

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

ハードコードされた文字列を印刷するだけです。

オンラインでお試しください!


1
あなたは...良く、この私が考えているよりも行うことができます
cleblanc




2

Perl 5、92バイト

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

オンラインでお試しください!


入力をバイトカウントにカウントする必要はありませんか?そうでなければ、単に入力文字列全体を...
cleblanc

入力はありません。それは、私がやっていたことからのTIOの残り物でした。
Xcali

クール、ありがとう。
cleblanc

+1。RLEデコードを使用してカップルを保存できますが、何らかの理由;s///作業の区切り文字として使用できませんでした。モバイルでは、あまり何もできません!オンラインでお試しください!
ドムヘイスティングス


1

Python 3、202バイト

これはかなりひどいもので、文字列を定義してそれを印刷するよりも多くのバイトがあります。

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

オンラインで試す


6
あなたは使用することができ\n、別のではなく、print
Nissa

148バイトこのアプローチを使用して
氏Xcoder

7
PPCGへようこそ!
AdmBorkBork

1

ゼリー74 72バイト

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

オンラインでお試しください!

説明:

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バイト

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


出力
enter image description here

wolfram サンドボックスでテストできます(ただし、使用するフォントによって結果が少し歪む場合があります)


興味深いことに\/、特別なキャラクターです。私はそれが何に使われているのか見つけることができなかったので、Mma.SEで尋ねました:mathematica.stackexchange.com/q/200673/61597
lirtosiast




1

C 165バイト

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

通常345 336バイト

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

経由で発見、このツールやカップルのカスタムの最適化で、検索と置換を経てgolfed。

オンラインでお試しください!


別の方法:

391バイト(キューブは変更しません)

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.