ぼろぼろのランプ


13

移動中、ランプを壊しました。今、私は新しいものが必要です。ランプにするのはあなたの仕事です!どのサイズが欲しいのかよくわかりませんが、波打つサイズが欲しいのはわかっています。

あなたのプログラム/関数は、数値入力を取り込み、その多くの波線/バンプでランプを印刷する必要があります。

例:

入力:2

出力:

/-\
 ()
 ()
/ __ \

入力:3

出力:

/-\
 ()
 ()
 ()
/ __ \

入力:5

出力:

/-\
 ()
 ()
 ()
 ()
 ()
/ __ \

ルール:

  • 0と負の数は関係ありません
  • ランプ(この課題)をより多様にするに、ランプシェードを変更する必要あります。
    • 幅は4文字、高さは1文字でなければなりません。
    • ランプシェード以外の形状を含む、任意の形状にすることができます。
    • 空白を含めることはできません。
    • ベースは同じままでなければなりません。
  • ランプシェードを使用して入力と出力の例を示す必要があります。
  • 最短のコードが勝ちます!

しかし、それはまったく波打っていません!。入力が5を超えると波打つことができれば嬉しかったでしょう。
オプティマイザー

22
ダウン投票しました。これはつまらないASCIIアートだと思います。中央に繰り返されるセクションがあり、パーツ間にオーバーラップはありません。これも圧縮するには短すぎます。それはただの形をしていABBB..BBBCます。セクションを変更するという要件は、人々が短い組み込み文字列を使用することを意味します。
-xnor

7
すでにすべてのダウン投票を停止できます!OPがメッセージを受け取ったと思います。
xnor

1
@xnorかわいそうにごめんなさい。これはおそらくこれまでで最もdownvoted質問の一つである:/ i.stack.imgur.com/T4A7X.jpg
ベータ崩壊

1
私は決して投票しませんでしたが、Draw a ASCII Lightning Boltとの類似性を考えると、私はダウンボッターを理解できます。ランプの高さを大きくするためにベースを大きくしたり、n番目の波線ごとに装飾を繰り返したりするなど、少しひねりを加えると、少し違ったものになります。
マナトワーク

回答:


4

Pyth-16バイト

Nは事前に初期化されているため、シェードに引用符を使用します。

*N4VQ+d`();"/__\

こちらからオンラインでお試しください

* 4            String repetition 4x, implicit print
 N             Preinitialized to Quote
VQ             For N in range(Q)
 +             String concat
  d            Space
   `()         Repr of empty tuple
;              Close for loop
"/__\          Implicitly print string, implicit close quote

5のサンプル:

""""
 ()
 ()
 ()
 ()
 ()
/__\

7

スノーマン0.2.0、42文字

)vg10sB]"[--]
"sP:" ()
"sP;bR"/__"sP92wRsP

サンプル実行:

llama@llama:...Code/snowman/ppcg53483lamp$ snowman lamp.snowman
5
[--]
 ()
 ()
 ()
 ()
 ()
/__\

そのため、この課題を解決したときに、文字列内のバックスラッシュをエスケープする機能を実装するのを忘れたことにのみ気付きました。それは間違いなく次のバージョンでのものになるだろうが、今のところ、最後の行を印刷するために私がやったことはここにある:

"/__"sP92wRsP

92はバックスラッシュのASCIIコードでありwR、配列にラップします。SnowmanのsP「文字列」は実際には単なる数字の配列であるため、これで印刷できます。


7
スノーランプを作りたいですか?
アレックスA.

3

> <>43 41 38バイト

"\__/"aiv
"&-1v!?:<&a" ()
~"!_\
?!;o>l

コードポイントを介した入力、たとえばスペースは32です。これは、プログラム独自のコードの一部をランプシェードとして使用し、衛星放送受信アンテナのようなものになります。

~\_!
 ()
 ()
 ()
 ()
 ()
/__\

(@randomraのおかげで提案)

さらに3バイトの場合、3行目を変更してもう少しカスタマイズを追加できます。

"\__/"aiv
"&-1v!?:<&a" ()
__\"\~"/
?!;o>l

これは、上に光を放つこれらのランプの1つを生成します。

\__/
 ()
 ()
 ()
 ()
 ()
/__\

3

R、54 52 46バイト

cat("RRRR",rep(" ()",scan()),"/__\\",sep="\n")

このバージョンでは、入力出力はほぼ混在しています:

{in / out} PUT:

> cat("RRRR",rep(" ()",scan()),"/__\\",sep="\n")
1: 4
2: 
Read 1 item
RRRR
 ()
 ()
 ()
 ()
/__\

編集1:@manatworkコメントのおかげで-2バイト。
編集2-6バイト。完全なクレジットは再び@manatworkに送られます


1
何もなく、外観を変更しない:" /_\\"する必要があります"/__\\"。ところで、それは\r必要ですか?
マナトワーク

@manatworkランプの足の形状を変更して、ランプをより安定させました+あなたの発言\rは私を2バイト節約しました!コードを読み直してください!ありがとう!
フレデリック

1
うーん…奇妙なツール。非対話的に動作させることはできません。とにかく、cat("RRRR",rep(" ()",scan()),"/__\\",sep="\n")うまくいくようです。
マナトワーク

@manatwork:まあ...これがうまくいくとは思っていませんでした!それは確かに素晴らしい解決策です。Rは驚きに満ちています!
フレデリック

BonjourFrédéric、PPCGでまだアクティブな場合は、5バイトを節約できます
JayCe



2

JavaScript ES6、34バイト

i=>`|==|
${` ()
`.repeat(i)}/__\\`

改行は重要です

入力が5の例:

|==|
 ()
 ()
 ()
 ()
 ()
/__\

2

sed、28バイト

s#.# ()\n#g
s#^\|$#/__\\\n#g

入力を単項で取ります。色合いは明白な選択です(ベースと同じ)。

テスト走行

$ echo -n 111 | sed -f lamp.sed
/__\
 ()
 ()
 ()
/__\

1

Gema:30文字

*=gema\n@repeat{*;\ ()\n}/__\\

サンプル実行:

bash-4.3$ gema '*=gema\n@repeat{*;\ ()\n}/__\\' <<< 3
gema
 ()
 ()
 ()
/__\

1

jq:30文字

(29文字のコード+ 1文字のコマンドラインオプション。)

8888,(range(.)|" ()"),"/__\\"

サンプル実行:

bash-4.3$ jq -r '8888,(range(.)|" ()"),"/__\\"' <<< 3
8888
 ()
 ()
 ()
/__\

オンラインテスト-rURLの受け渡しはサポートされていません-自分でRaw出力を確認してください。)





1

空白、169バイト

[S S S N
_Push_0][T  N
T   T   _Read_STDIN_as_integer][S S S T S T T   T   S S N
_Push_92_\][S S S T S T T   T   T   T   N
_Push_95__][S N
S _Duplicate_95__][S S S T  S T T   T   T   N
_Push_47_/][N
S S N
_Create_Label_LOOP][S S S N
_Push_0][T  T   T   _Retrieve_at_address_0][S S S T N
_Push_1][T  S S T   _Subtract][S N
S _Duplicate][S S S N
_Push_0][S N
T   _Swap_top_two][T    T   S _Store_at_address_0][N
T   T   S N
_If_neg_Jump_to_Label_PRINT][S S S T    S T S N
_Push_10_newline][S S S T   S T S S T   N
_Push_41_)][S S S T S T S S S N
_Push_40_(][S S S T S S S S S N
_Push_32_space][N
S N
N
_Jump_to_Label_LOOP][N
S S S N
_Create_Label_PRINT][S S S T    S T S N
_Push_10_newline][S S S T   S S S S T   N
_Push_33_!][S N
S _Duplicate_33_!][S N
S _Duplicate_33_!][S N
S _Duplicate_33_!][N
S S T   N
_Create_Label_LOOP_2][T N
S S _Print_as_character][N
S N
T   N
_Jump_to_Label_LOOP_2]

強調表示としてのみ追加される文字S(スペース)、T(タブ)、およびN(改行)。
[..._some_action]説明としてのみ追加。

オンラインで試してください(未加工のスペース、タブ、改行のみ)。

擬似コードの説明:

すべての文字を逆の順序でスタックにプッシュしてから、ループで出力します。

Integer i = STDIN as input
Push "\__/" to the stack
Start LOOP:
  i = i - 1
  if(i is negative):
    Go to function PRINT
  Push "\n)( " to the stack
  Go to next iteration of LOOP

function PRINT:
  Push "\n!!!!" to the stack
  Start LOOP_2:
    Print top as character to STDOUT
    Go to next iteration of LOOP_2

注:i上記の擬似コードでは、を繰り返すたびにヒープに格納されますLOOP。これは、最後に印刷されるスタックに残したくないためです。



1

05AB1E17 15 13 11 バイト

„ (и„/_.ø)˜∞

-2バイト(17→15)@EriktheOutgolferに感謝します@dzaimaのCanvas answer
に触発された後の-2バイト(13→11)。

キャップはベース(/__\)と同じです。

説明:

 (            # Literal string " ("
   и           # Repeat " (" the input amount of times
               #  i.e. " (" and 3 → [' (',' (',' (']
    „/_        # Literal string "/_"
             # Surround the list of " (" with "/_" on both ends
               #  i.e. [' (',' (',' ('] → ['/_',[' (',' (',' (',' ('],'/_']
         ˜     # Flatten this list
               #  i.e. ['/_',[' (',' (',' ('],'/_'] → ['/_',' (',' (',' (','/_']
              # Mirror each item
               #  i.e. ['/_',' (',' (',' (','/_'] → ['/__\',' () ',' () ',' () ','/__\']
               # And output the list new-line delimited (implicitly due to the mirror)

古い13バイトの答え:

„/_D (Iиs)˜∞

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


1

Excel、31バイト

範囲から数値として入力を受け取る匿名ワークシート関数 [A1]、呼び出しセルに出力。

このランプはミュージカルです-そしてあなたの一日を活気づけて明るくするのに役立ちます。

="/\
"&REPT(" ()
",A1)&"/__\"

出力

I love lamp


1

PowerShell 5.1、 28 26バイト

2バイトのMazzyに感謝

8008;," ()"*"$args";"/__\"

シェードは任意の4文字にすることができるため、数字を使用すると引用符のペアが保存されます。最も難しいのは、見栄えの良い日陰を見つけることでした。

出力:

PS C:\Users\ItsMe\Desktop> .\scratch.ps1 4
8008
 ()
 ()
 ()
 ()
/__\

素敵なランプシェード)
mazzy

1
これを試してください8008;," ()"*"$args";"/__\"
奇抜な

1

Python 2、36バイト

print"-"*4+"\n ()"*input()+"\n/__\\"

入力4の場合:

----
 ()
 ()
 ()
 ()
/__\

Pythonでは、パイプを使用するランプシェードは1バイト少ないことに注意してください。

@Alexのおかげで-1バイト!


1
:私はあなたが4で乗算して、単一の文字にランプシェードを変更した場合、あなたは1バイトの節約ができると思うprint"-"*4+"\n ()"*input()+"\n/__\\"
アレックス


0

SWI-Prolog、73 60バイト

a(X):-write(golf),writef("%r",["\n ()",X]),write("\n/__\\").

a(5). 出力

golf
 ()
 ()
 ()
 ()
 ()
/__\

0

ジュリア、36バイト

n->print("|~~|\n"*" ()\n"^n*"/__\\")

これにより、入力として整数を取り、stdoutに出力する名前のない関数が作成されます。

例:

julia> f(4)
|~~|
 ()
 ()
 ()
 ()
/__\

0

Bash + coreutils、37バイト

yes ' ()'|sed '1i####
'$1'{a/__\\
q}'

改行が必要であり、合計バイト数にカウントされます。GNU sedが必要です。

実行:

./squiggly_lamp.sh 2

出力:

####
 ()
 ()
/__\



0

Javaの7 11、84の 83 37バイト

n->"i!!i\n"+" ()\n".repeat(n)+"/__\\"

オンラインでお試しください。(注:Java 11はTIOではまだサポートされていないため、同じバイトカウントでString.repeat(int)エミュレートされていrepeat(String,int)ます。)

i!!iキャップとして使用します。¡!!¡良く見えますが、2バイト多くなります。

説明:

n->                    // Method with integer parameter and String return-type
  "i!!i\n"             //  Return the cap + new-line
  " ()\n".repeat(n)    //   appended with " ()" and a new-line `n` amount of times
  "/__\\"              //   append with "/__\"




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