非表示のテキストを印刷する


38

文字列を入力として、文字列の長さに等しい数の空白文字(0x0Aおよび0x20)を出力します。

たとえば、文字列が与えられた場合、Hello, World!コードは正確に13個の空白文字のみを出力する必要があります。これらは、スペースと改行の組み合わせにすることができます。

コードは、後続の改行やスペースを追加出力しないでください。

テストケース:

     Input      -> Amount of whitespace to output
"Hello, World!" -> 13
"Hi"            -> 2
"   Don't
Forget about
Existing
Whitespace!   " -> 45
""              -> 0
"             " -> 13
"
"               -> 1

得点:

これはので、最少バイト数が勝ちます!


1
その「0x0A」であなたが何を意味するかわかりません。どこに出力する必要がありますか?そのままにしておくと、「a␠b␊c」は「␠␠␠␊␠」になりますか?
マナトワーク

1
@manatwork 0x0A0x20は、それぞれ改行文字とスペース文字の16進値です
-Skidsdev

1
「いくつかの空白文字(0x0Aおよび0x20)を出力する」–出力のどこにこれらの改行文字を配置しますか?
マナトワーク

3
These can be any mix of spaces and newlines出力は、スペースと改行の任意の組み合わせにすることができます。必要に応じてスペースを出力することもできます。それはあなた次第です
-Skidsdev

1
とった。ありがとう。
マナトワーク

回答:


137

空白311 150 77 68 65 46 41 38バイト

Kevin Cruijssenのおかげで-3バイト-Ephphathaの
おかげで-27バイト


  
   	 	 
 
  
 	
	 			
	  
	
  
 


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

目に見える形式

'\n  \n   \t \t \n \n  \n \t\n\t \t\t\t\n\t  \n\t\n  \n \n\n'

説明(s =スペース、t =タブ、n =改行)

nssn     # label(NULL) - loop start
ssststsn # push 10 in the stack -> [10]
sns      # duplicate the top of the stack -> [10, 10]
sns      # duplicate the top of the stack -> [10, 10, 10]
tnts     # read a single char from input, pop the stack and store at that address -> [10, 10] [10:<char that was read>]
ttt      # pop the stack and put the value at that adress on stack -> [10,<char>] [10:<char>]
ntssn    # jump to label(0) - since label(0) is not defined, the interpreter jumps to the end of the program - if the top of the stack (char) is 0 -> [10] [10:<char>]
tnss     # pop the top of the stack and print as ascii -> [] [10:<char>]
nsnn     # go back to the label(NULL)

25
これが実際に機能すると仮定すると、これは間違いなく最も創造的な答え
-Skidsdev

24
答えはどこですか?それも見えない?
エリックアウトゴルファー

16
これがブラックマジックです。あなたのコードはそこにもありません!-1
クリストファー

28
WHITEspace MAGICのような@Christopher-
ロッド

12
私は誰かが空白のプログラムで、この質問に答えることを知っていた
Draco18s

59

22
japtには真剣にこれが組み込まれていますか?くそー...
Skidsdev

22
@Mayubeには、文字列内のすべての文字を別の文字に置き換えるビルトインがあり、デフォルトの置換はスペースです;)
トム

4
非常に素晴らしい!プログラムを実行している場合-Q、入力にフラグを追加して、出力を引用符で囲むことができます。TIO
オリバー

38

Haskell、7バイト

(>>" ")

オンラインでお試しください!使用法:(>>" ") "Hello, world!"

2つのリスト(および文字列はHaskellの文字のリスト)が与えられた場合、>>オペレーターは最初のリストに要素がある限り、2番目のリストを繰り返します。" "2番目の引数として設定すると、入力文字列が長いのと同じ数のスペースが連結されます。


代替(同じバイト数):

(' '<$)

オンラインでお試しください!使用法:(' '<$) "Hello, world!"

いくつかの値とリストを指定すると、<$オペレーターはリスト内の各値を指定された値に置き換えます。このよう5 <$ "abc"になり[5,5,5]、そして' ' <$ "abc"" "

(<$)' '私のコードでさらに海洋生物を見つけたい場合、この関数はとして同等に書くことができ ます。


18
それは愛らしい小さなひれのない魚のようです
テイラースコット



17

網膜、3 4バイト

S\`.

古いバージョンは、Retinaが末尾のラインフィードを印刷するため機能しません。

。
 

(2行目にはスペースが含まれています)。


2
網膜TIOは非常に使いやすいです。ここにあなたの答え
デジタル外傷

2
残念ながら、Retinaはデフォルトで末尾の改行を印刷します。これ\`を回避するには、先頭に追加する必要があります。その後、使用する方が短くなりますS\`.。これにより、各文字が改行に置き換えられます(入力を各文字の周りで分割するため)。
マーティンエンダー

@MartinEnder Ahhhは、それがRetinaなのかTIOなのかわからなかった。ただし、そこにバイトを保存するための助けをありがとう!
TheLethalCoder



11

C#、28 24バイト

s=>"".PadLeft(s.Length);

string28バイトのコンストラクターを使用する古いバージョン:

s=>new string(' ',s.Length);

3
まったく同じことをしたかった
-LiefdeWen

1
@StefanDelport私が周りにいるときはC#を素早く使う必要があります:)同じことをするLinqアプローチがありますが、それらはすべてずっと長くなります
...-TheLethalCoder


9

Mathematica、21バイト

StringReplace[_->" "]

1
文字リスト入力が許可されている場合、これはになります#/._->" "&。悲しいことに、入力は文字列であり、Characters []はソリューションより1バイト長くなります。(
CalculatorFeline

1
これにはa #とa &は必要ありませんか?例えばStringReplace[#,_->" "]&
イアン・ミラー

3
@IanMiller Mathematica 10.4または11にはないreference.wolfram.com/language/ref/StringReplace.html
alephalpha

2
わかった 10.3しかありません。たぶんアップグレードする時間...
イアン・ミラー

8

JavaScript ES6、22バイト

a=>a.replace(/./g," ")

f=a=>a.replace(/./g," ");

var test = f("Hello, World!");
console.log(test, test.length);


3
ええと、「あぁ、s=>s.replace(/[^]/g," ")他のソリューションよりも1バイト長くなければならない」と思った。出力で改行が許可されることは私にはありませんでした:P
ETHproductions

8

C、31バイト

f(char*c){puts(""),*c++&&f(c);}

1
これは他のCの回答とどう違うのですか?明らかにこれは短くなっていますが、もう一方を単に編集する必要がありますか?それは2つの解決策を備えた1つの答えですか?
タス

4
@Tasまず、ある意味では、実際にはそのままではコンパイルされないため、短いとはいえ、これは他のものほど良くないと思う。これは単なる関数なので、その周りにいくつかのメインルーチンを記述する必要があります。しかし、それ短く、他の人は機能だけを投稿しているようです。明らかに、2つの非常に異なるソリューションです。1つは他の洗練ではないので、私にとっては2つの異なる答えであるべきだと思います。しかし、私はこのコミュニティには初めてです。1人のユーザーが1つの回答しか投稿しないというコンセンサスはありますか?もしそうなら、私は次回それをします。
sigvaldm

コンマは本当にセミコロンではなくコンマでなければなりませんか?
オスカースコグ

1
何LHSがないのでよく@OskarSkog、この場合にはそれほど問題ではありません

1
@OskarSkogはい、コンマにする必要があります。@catが言うように、この場合、それは実際には重要ではありませんが、バリエーションにコンマを選択しました:)コンマ演算子は2つの式を評価し(i++, j++forループなど)、右端の式を返します。重要な詳細は、再帰が何らかの形で停止する必要があるということです。&&lhsがfalseの場合、rhsを評価しません。*c++文字列のヌル終端を指す場合、falseと評価されます。
sigvaldm


7

Excel VBA、17 15バイト

セルから入力を受け取り[A1]、入力の長さのスペースをVBEイミディエイトウィンドウに出力する匿名VBE イミディエイトウィンドウ機能

?Spc([Len(A1)])

7

05AB1E、3バイト

vð?

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

v   # For each character...
 ð? #    Output a space without a newline

その他の3バイトソリューション(これらのほとんどについてMagic Octopus UrnKevin Cruijssenに感謝)

v¶? # For each character print a newline (without adding a newline)
võ, # For each character print the empty string with a newline
gð× # Get the length, concatenate that many copies of space
g¶× # Get the length, concatenate that many copies of newline
Sð: # Split, push a space, replace each char in input with a space
ðs∍ # Push ' ', swap, make the string of spaces as long as the input was
võJ # For each char, push a space and ''.join(stack)
v¶J # For each char, push a newline and ''.join(stack)
€ðJ # For each char, push a space. Then ''.join(stack)
ۦJ # For each char, push a newline. Then ''.join(stack)

1
その他のソリューション:gð×:、私が思いついた残りの部分は次のように3以上であったõ‚.B¤
マジックタコ壺

2
別の楽しいもの:Sð:
マジックタコ

1
もっと楽しく:ðs∍
マジックタコ

いくつかの代替の3バイト:võJ/ v¶J; €ðJ/ €¶J。また、文字列I / Oが要求された場合、I / Oとしての文字シーケンスがデフォルトで許可されているため、いくつかの2バイトバージョン:€ð/ €¶/ εð/ ε¶およびð:/ が可能です¶:。これはかなり古い課題であり、他のすべての回答は実際の文字列を使用するため、文字列I / Oとして保持しているかどうかは理解できました。
ケビンクルーイッセン



6

C、45バイト

メインを使用します。gccでコンパイルし、警告を無視します。

main(c,v)char**v;{while(*(v[1]++))puts("");}

使用法:

$./a.out "Hello, World!"

1
入れられない理由char**vmain(c,v)
CalculatorFeline

@CalculatorFeline少なくともGCC 6.3.1での単純なコンパイルでgcc main.cは、ANSI関数定義とK&R関数定義を混在させることmain(c,char**v)はできないため、コンパイルしません。私はやらなければならないmain(int c,char**v)main(c,v)char**v;、後者の方が3バイト短いです。これらのスタイルをミックスできるフラグや何かを偶然知りませんか?
sigvaldm

3
いいえ、混ぜることはできません。それを可能にするフラグはありません。K&Rスタイルは古く、コードのゴルフと難読化の目的でのみ使用されます。
コーディグレー

そして、私はchar**v完全に削除してもコンパイルされないと推測しています。
CalculatorFeline

@CalculatorFeline char**完全に省略すると、コンパイラはそれをとして解釈しますint。私が間違っていない場合は、間接参照しようとしてエラーが発生しint、プログラムがintchar秒を消費するため、プログラムが期待したことを実行しなかったとしても、NULL値を取得することはありません。
sigvaldm



5

> <>、7バイト

i0(?;ao

プログラムはループです

i         //Push a character from the input onto the stack
 0        //Add a 0 to the stack
  (       //Pop the top two values of the stack, and push a 1 if the second is less than the first (In this case, the input has all been read), else push a 0
   ?      //Pop the top of the stack. If the value is a 0, skip the next instruction
    ;     // Terminate the program
     a    // Add a newline to the stack
      o   // Pop the top character of the stack and print it


5

六角形12 11バイト

マーティン・エンダーのおかげで-1バイト

,<.;.M@.>~8

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

拡張されたヘックスは次のとおりです。

  , < . 
 ; . M @
. > ~ 8 .
 . . . .
  . . .

入力がある間、このコードは実行されます:

,        # Get input
 <       # Turn right (SE) if we didn't get EOF
  M8     # Set the memory edge to 778 which is 10 (mod 256)
    ;    # Print as a character (newline)
     >   # Redirect East
      ~  # Multiply by -1. This makes the pointer go to the top when it runs off the edge
       8 # Effectively a no-op.

EOFに達したとき:

,    # Get input
 <   # Turn left (NE)
  8  # Effectively a no-op
   @ # End program

M8;(778 = 10(mod 256)を与える)で3バイトで改行を印刷できます。これにより、現在の~場所を移動して;、バイトを節約できます。
マーティンエンダー


5

Python 2、25バイト

exec'print;'*len(input())

Loovjoのおかげで-2バイト
-totalhuman:p
-3バイトのおかげで無効なコードで-2 バイト


1
あなたは後に括弧を削除することができexec、それは、Python 2でのキーワードだから
Loovjo

1
@Loovjoそうそう、Python2。ありがとう!
ハイパーニュートリノ

これは古くて機能しているものの、exec'print;'*len(input())機能することは知っています。
完全に人間

1
@totallyhumanそうそう、ありがとう:P
HyperNeutrino

1
@TheMattはおそらく問題の仕様には含まれていませんが、デフォルトの受け入れ可能な入力メソッドの1つです。メタを探してみてください、今は探したくありません
-HyperNeutrino


4

Cubix、6バイト

6バイターをワフー!

wi?@oS

立方体

  w
i ? @ o
  S
  • i 入力を取得
  • ? スタックのトップをテストします
    • ネガティブ(EOI)の場合、wレーンチェンジにリダイレクトされ、@停止する
    • 0(ヌル)を停止すると、これはヒットしません。
    • Sowスタックにスペースを積極的にプッシュする場合、出力してレーンを変更しますi

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


1
甘く、
Cubix


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