イワシが大好き


33

私はイワシが大好きで、それを十分に手に入れることができません。また、私のコンピューターであるOmnilang 5000は言語に依存しません。

私のコンピューターにイワシを体験する喜びを与えるために、さまざまな向きでイワシの缶詰を画面に表示し、最大10個のイワシを表示できる多くのプログラムを彼に提供することにしました。

この課題では、次のパラメーターに基づいてプログラムを作成する必要があります。

入力

数値(0〜10)と次の「LR」(それぞれ左または右を表す)のいずれかからの文字。例:3Lまたは5R; これがプログラムにどのように入力されるかはあなた次第です。

出力

イワシの開いた缶は、イワシが指示された方向を向いており、キー(「%」文字で表される)と皮をむいた蓋(「@」文字で表される端で巻き上げられた缶)が缶の上部にあります。

  • すべてのイワシは、入力で示された方向を向く必要があります。
  • すべてのイワシは、g( " )"または " (")と尾 " ><"の間に5文字の長さの体を持ちます。
  • キーと皮をむいたふたロールは、常にイワシの反対方向を向いています。
  • 以下の例に示すように、錫は3次元の外観を持っている必要があります。
  • スズの最小高さは3イワシです。そのため、数が3未満の場合、入力されたイワシの数とともに、高さが3匹のイワシのスズを表示する必要があります。それ以外の場合、スズは入力で示されたイワシの高さでなければなりません。入力は、だから、0Rまたは0L空のイワシ錫が表示されます。
  • 検証できない他の入力には何も表示されません。

たとえば、「3L

 __________
(__________@%
|<*)_____><||
|<*)_____><||
|<*)_____><||
'==========''

7R」について

   __________
 %@__________)
 ||><_____(*>|
 ||><_____(*>|
 ||><_____(*>|
 ||><_____(*>|
 ||><_____(*>|
 ||><_____(*>|
 ||><_____(*>|
 ''=========='  

2L」について

 __________
(__________@%
|<*)_____><||
|<*)_____><||
|          ||
'==========''

0R」について

   __________
 %@__________)
 ||          |
 ||          |
 ||          |
 ''=========='

0L

 __________
(__________@%
|          ||
|          ||
|          ||
'==========''

無効な入力は何も返しません...

  • これはコードゴルフであるため、最小数のキャラクターがこのチャレンジに勝ちます。
  • 通常どおり抜け穴ありません

回答:


39

> <>250 235 + 3 = 238バイト

</~?{"  __________"a:="L"i&
o/?=1l
:/}rv?{~$?{"()__________@%":
l< o/?=1
:&oa/&~$?(3$@0-3:
/!?:</"||><_____(*>|"av?@:$-1
 /=?/v"|<*)_____><||"a/
 \2lo/
\~&
\>:?!\1+$::{a"|"{?:"          ||"{?~
<\?=2 lo
"'":~/~?{"''==========":?{
;!?lo<

オンライン試してみるか、魚の遊び場で見てください!STDINから「L」または「R」を読み取り、イワシの数が既にスタックにあると想定します(-v+3バイトのフラグが必要です)。

もちろん、私はこれを<>で書かなければなりませんでした。


3
Fishでこのソリューションを書くことはインスピレーションを受けています
...-WallyWest

魚の遊び場はどのように機能しますか?実行できません。入力はどこに配置しますか?
-JAD

@JarkoDubbeldam、コードをウィンドウにコピーして送信した後、「初期スタック」(-vフラグをシミュレート)と言うイワシの数と、「与える」の下の方向(「L」または「R」)を入れる必要がありますプログラムへの入力」をクリックしてから、「与える」をクリックします。(願わくばそれをより明確にするために答えを編集しました。)
ツリーではない

1
素晴らしい:Dは、あまりにもデバッグ時に素敵にする必要があります
JAD

15

絵文字コード456 448バイト

🐋🚂🍇🐖🐟d🚂🍇🍦a😛0d🍊a🍇😀🔤 __________❌n(__________@%🔤🍉🍓🍇😀🔤  __________❌n%@__________)🔤🍉🔂i⏩0🐕🍇🍊a🍇😀🔤|<*)_____><||🔤🍉🍓🍇😀🔤||><_____(*>|🔤🍉🍉🍊▶️4🐕🍇🔂i⏩0➖3🐕🍇🍊a🍇😀🔤|          ||🔤🍉🍓🍇😀🔤||          |🔤🍉🍉🍉🍊a🍇😀🔤'==========''🔤🍉🍓🍇😀🔤''=========='🔤🍉🍉🍉

2つの引数を取ります。最初の引数は行、2番目の引数は方向(0または1)です。

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

「読み取り可能」のバージョン化されていないバージョンと擬似コード:

🐋 🚂 🍇
  🐖 🐟  d 🚂  🍇
    🍦 a  😛 0 d

    🍊 a 🍇
      😀 🔤 __________❌n(__________@%🔤
    🍉
    🍓 🍇
      😀 🔤  __________❌n%@__________)🔤
    🍉

    🔂 i ⏩ 0 🐕 🍇
      🍊 a 🍇
        😀 🔤|<*)_____><||🔤
      🍉
      🍓 🍇
        😀 🔤||><_____(*>|🔤
      🍉
    🍉

    🍊 ▶️ 4 🐕 🍇
      🔂 i ⏩ 0  ➖ 3 🐕  🍇
        🍊 a 🍇
          😀 🔤|          ||🔤
        🍉
        🍓 🍇
          😀 🔤||          |🔤
        🍉
      🍉
    🍉

    🍊 a 🍇
      😀 🔤'==========''🔤
    🍉
    🍓 🍇
      😀 🔤''=========='🔤
    🍉
  🍉
🍉

👵
extendclass int { // this makes the first argument be an int without declaring it
  func 🐟(int d) {
    const a = 0 == d // a bool

    if a {
      print " __________\n(__________@%"
    }
    else {
      print "  __________\n%@__________)"
    }

    for i in range(1, arg) {
      if a {
        print "|<*)_____><||"
      }
      else {
        print "||><_____(*>|"
      }
    }

    if 4 > arg {
      for i in range(0, arg - 3) {
        if a {
          print "|          ||"
        }
        else {
          print "||          |"
        {
      }
    }

    if a {
      print "'==========''"
    }
    else {
      print "''=========='"
    {
  }
}
👵

2
これまで絵文字コードに出くわすことはありませんでしたが、それは気になります...クレイジー!大好きです!
-WallyWest

...なぜこの言語が存在するのでしょうか?つまり、私はそれが好きですが、なぜですか?そして、それを学ぶのにどれくらいかかりましたか?
テイラースコット

1
@TaylorScott 1)知らない、私はそれを作成しなかった。2)本当に数時間
17

6

Python 2、155バイト

lambda x,y,t='_'*10:'\n'.join(x[::1-2*y]for x in[' %s  '%t,'()'[y]+t+'@%']+['|'+('<>**)(%s><<>'%t)[y::2]+'||']*x+['|'+' '*10+'||']*(3-x)+["'"+'='*10+"''"])

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

入力は長さ2のタプルで構成されます。最初の要素はイワシの数を示します。2番目の要素は方向を示します。0左、1右。

-notjaganとofficialaimmのおかげでラムダマジックを使用して-84バイト


1
174バイト(そこに@officialaimmによって忍者が入った)。
-notjagan



1
@officialaimmは驚くほど十分で、負の値を指定すると、スズのサイズが拡張されますが、イワシは入れられません。–
Pavel

3
@Phoenixはい。ただし、OPはrangeを指定しているため、問題ではありません0 to 10。PS` -10`は、10イワシがいたことを意味するため、空のブリキを印刷しますが、あなたはすでにそれらを食べました。:D
officialaimm

5

釣り、1311バイト

v+CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC?CCCDCC[CCCCCCCCCCCCCCCCCCCCC?CCCCCCCCCCCCCCCCCCCC[CCC[CCCCC?CCCC?DDDDD[CCCCCCCCCCCCCCCCCCC?CCCCCCCCCCCCCCCCC[?CCCCCCCCCCCCCCCC_
  `3`n{n{In{I{`L`{`  __________ `}}!{{rD}}D{{NE`%@__________)`}}!{{E`(__________@%`}}D{{NDE}}}}={d}}!  d  D{{{{{`><_____(*>`}}!{{E`<*)_____><`}}D!{{{E`|`P}PE`||`ND
                                   [DDDDDD|                     [DDDDDDDDDDDDDDDDDDDD|   D     [C?CDDDDDDDDCCCCCCCCCCCCCCCCCCC[DDDDDDDDDDDDDDDDD|[CCCCCCCCCCCCCCCC_
                                                                                         D      }=d [^+Cv-|{{{{{`          `}}                    {{{E`||`P}PE`|`ND
                                                                                         D       [CCCCCCCCCCCCCCCCCCC?DDDDDDDDD+CCCC                              D
                                                                                         D        E`''=========='`{{{= }}}r{{{ [CCCC                              D
                                                                                         D                           [^CCCCCCCv|}}}N                              D
                                                                                         |DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD]

stdinフォームから入力を受け取ります。

5
R

釣りはTry It Onlineにはありませんが、リンクされたesolangsページにRubyのインタープリターがあります。

これは、私がフィッシングで作成した最初のプログラムです。実際、2D言語で作成した最初のプログラムです。したがって、おそらくもっと短くなる可能性があります。ゴルフのヒントは大歓迎です(ただし、私が書いた内容がわからないことを考えても、誰もくれなかったとしても驚かないでしょう)。

以下は、プログラムが入力に使用するパスのGIFです1R(低品質でごめんなさい):

GIF

(これは私が作成したインタープリターを使用して作成されました。私が知る限り、釣りを「視覚化」する公開プログラムはありません)


CとDの構文は、肥大化の原因になっているように見えます...それを軽減するための速記はありますか?
WallyWest

実際、それはコードに不可欠なように見えます...興味深い言語の選択!:)
WallyWest

4

、49バイト

A⌈⟦Iθ³⟧ζBχ²_←↓(↓ζ'×=χ''↖P↑ζ←↑ζ@%FN“#∨‹VB“«ji”FN‖T

オンラインでお試しください!リンクは、コードの詳細バージョンです。最初の引数はイワシの数、2番目は方向(0 =左、1 =右)です。


素晴らしい仕事、ニール。コンパイラリンクを提供してくれてありがとう!
-WallyWest

2
私に感謝せず、すべてのボイラープレートを生成するTIOを作成してくれた@Dennisに感謝します。
ニール

3

SOGL V0.1251の 48 バイト

!gX⁴‘gj⁰%!⁵‘b⌡"κN╥█*≤⌡║)‘3b-"÷AZ⁴‘∙_"Χccσ«‘⁰e?±↔

ここで試してみてください!
最初の入力がカウントであり、2番目の入力が1または0で表される左または右であると想定します。

説明:

..‘..‘                          push 2 compressed strings - the 1st two lines of the box - "  __________ " and "%@__________)"
      b⌡                        input times do
        "..‘                      push a line with a sardine - "||><_____(*>|"
            3b-                 push 3-input
               "..‘∙            get an array of that many "||          |"
                    _           put all the arrays contents on the stack
                     "..‘       push "''=========='" - the last line
                         ⁰      wrap all of that in an array
                          e?    if the 2nd input [is not 0]
                            ±↔    reverse the array horizontally

2

R、334バイト 311バイト

s=function(n,d){
a="__________"
b="'=========='"
if(d == "L"){cat(paste(c(" ",a,"\n(",a,"@%\n",rep("|<*)_____><||\n",n),rep("|          ||\n",max(c(3-n,0))),b,"'\n"),collapse=""))} else {cat(paste(c("  ",a,"\n%@",a,")\n",rep("||><_____(*>|\n",n),rep("||          |\n",max(c(3-n,0))),"'",b,"\n"),collapse=""))}}

関数は、nの数値と方向の文字列を取ります。

これは初めての投稿なので、コードのバイト数をカウントする方法がわからないことは認めます。


1
コードをTIOに貼り付けることができます。ここでは、コードをテストすることもできます:)また、バイトカウントも表示します。この場合は310です。
イアンH.

2

C ++、307 296 292バイト

#include<string>
auto z(int n,char c){std::string r=c-82?" __________\n(__________@%\n":"  __________\n%@__________)\n";int l=0;for(;l<n;++l)r+=c-82?"|<*)_____><||\n":"||><_____(*>|\n";for(;l<3;++l)r+=c-82?"|          ||\n":"||          |\n";r+=c-82?"'==========''":"''=========='";return r;}

使用法 :

z(<number of sardines>,<'L' or 'R'>);

ユーザーThePirateBayのおかげで-11バイトが節約されましたZacharýのおかげで-4バイト


1
#defineディレクティブの括弧を削除できますか?私はそれをテストしませんでしたが、それらの必要はないようです。

1
ことが可能c!=82であることc-82、あなたがそれを使用するすべての場合には?
ザカリー

1

Python 2、287バイト

n,d=input()
t,a,b,c,e,k=' __________   ','(__________@% ','|<*)_____><|| ','|          || ',"'=========='' ",'\n'
print[t+k+a+k+k.join([b]*n)+k+k.join([c]*(3-n))+k*(n<3)+e,t[::-1]+k+a[::-1].replace(*'()')+k+k.join([b[::-1].replace(*')(')]*n)+k+k.join([c[::-1]]*(3-n))+k*(n<3)+e[::-1]][d]

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

入力は、この形式の数値のコンマ区切りタプルです:2, 1。最初の数字は魚の量で、2番目は左が0、右が1です。

これは、他の答えをゴルフから外そうとする試みとして始まりました(私は完全にできると思っていました)が、それは残念です。:P誰もが頭と尻尾を作ってゴルフを手伝うことができたら(今は午前12時だと非難します)、私はうれしいです。


それでも素晴らしい試みです!
WallyWest

1

C#(.NET Core)、289バイト

(h,d)=>{var l=d=='L';string r=(l?" ":"  ")+"__________\n"+(l?"(":"%@")+"__________"+(l?"@%":")")+"\n";for(int i=0;i<(h>3?h:3);i++){r+=(l?"|":"||")+(i<h?(d=='L'?"<*)_____><":(d=='R'?"><_____(*>":"")):"          ")+(l?"||":"|")+'\n';}var b=(l?"'":"''")+"=========="+(l?"''":"'");return r+b;}

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

パラメータとして整数とchar(L、R)を取り、結果の文字列を出力します。

あー いくつかの迷惑な文字列定数を処理する必要がありましたが、悲しいことにstring * length、C#だけではできません。そして、メソッドnew string(char, length)はバイトコストの価値がなかったでしょう。


アルゴリズムは次のように機能します。

  1. 最初にイワシが右向きか左向きかを決定します。これは、それに応じて文字列をフォーマットするためです。LパースペクティブとRパースペクティブを切り替える条件演算子を使用して、上部の文字列を作成します。
  2. 次に、最小で3回、最大で左の入力時間を実行するループを作成します。そうすれば、ボックス内のイワシが3匹以下の場合、空のスペースを作成できます。
  3. このループ内で、パースペクティブに応じて文字列をフォーマットします。また、ifのh > i内部にイワシを入れます。の場合i >= h、イワシが通常いる空のスペースがあります。
  4. 最後に、ボックスの下部を作成し、再び視点に従ってフォーマットします。


1

JavaScript(ES6)、283 273 269 251バイト

@WallyWestのおかげで10バイト節約

余分な括弧を削除して4バイトを保存

@ThePirateBayのおかげで18バイト節約

標準ライブラリの文字列反転の欠如に苦しんでいます。n魚の数とd方向の入力を受け取る関数を定義します。dが「L」または「R」でない場合にスローされます。

(n,d,_=c=>c.repeat(10),x=_(`_`),z=a=>a.reverse``.join``)=>
([p,q,g,r,s]=d>`L`?d>`R`?[]:[`)`,`(`,`>`,z,y=>z(y.split``)]:
[`(`,`)`,`<`,a=>a.join``,y=>y],` ${x}
`+r([p,x,s(`@%`)])+`
`+(r([`|`,g,`*`,q,`_____`,`><`,`||`])+`
`).repeat(n)+r([`'`,_(`=`),`''`]))

オンラインで試す


PPCGへようこそ!ここで気に入っていただけることを願っています...スコアをゴルフで下げるためにできることを見てみましょう...
WallyWest

@WallyWestありがとう!関数を引き出して、if...else if構造化割り当てを使用してネストされた3項に変更することにより、さらに17バイトを削ぎ落としました。しかし、私はアイデア
Jared Smith

1
@WallyWest _関数を2回使用し、1回は10個のアンダースコア(2回使用)、1回は10個の等号に使用するため、関数に含めると1 バイト節約できます。そして、間違ったテンプレート文字列を使用していない限り、連結の代わりにテンプレート文字列を使用すると、3バイト多くなります。
ジャレッド・スミス

1
@WallyWestはヒントをありがとう、不要な括弧を削除すると14バイト節約されました。
ジャレッド・スミス

1
@Zacharýできました。インターネットで見知らぬ人を幸せにするのが面白くないなら、そもそもSEにはいられないでしょう。
ジャレッド・スミス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.