はい、91行です


50

yes(coreutilsから)は91行の長さです。それらの多くはコメントしているが、それはまだですWAY長すぎます。

2019年9月から編集:ソースファイルは過去5年間で成長し、現在は126行の長さになっています。

模倣するプログラムを書くyes

  • stdout「y \ n」の無限ストリームへの出力
  • そこでプロセスを殺すよりも、それは他の停止するためのオプションでなければなりませんSIGKILL。しかし、SIGINTSIGPIPE罰金です
  • 「y」または「\ n」またはそれらのASCII値(121、0x79、0171、10、0xAまたは012)を使用することはできません。

最短回答が勝ちます。

ボーナス:

  • stdin「y」の代わりにフレーズを受信して印刷できる場合は、コード長から10を引きます(ただし、改行も含まれます)。

13
「y」または「\ n」の使用は許可されていません」-これを「文字列リテラルを使用しyたり\n、文字列リテラルの内部で使用したりすることはできません」と読むべきですか?
アプシラー

12
関連するメモでtrue.cは、GNU は80行の長さです。
デニスウィリアムソン14

6
@DennisWilliamson同様に関連するメモでは、false.cは2行の長さです。...; _;
ロードアロ14

6
coreutils yesは、コマンドラインでオプションの引数を取りますstdin
ブライアンミントン14

7
@MrLore:さまざまなことの確認を常に要求する可能性のある他のプログラムにパイプするため、y自分でsと入力する必要はありません。
マーカスエロニウス14

回答:


37

CJam、13バイト-10 = 3

l_'x)?{_oNo}h

これにはJavaインタープリターを使用する必要があります。これは、オンラインインタープリターがプログラムの終了後に戻るだけだからです。

(Ctrl-Cを押して)SIGINTでプログラムを中止できます。STDINから行を読み取り、その行を出力します(y入力が空の場合)。

説明

l             "Read line from STDIN.";
 _            "Duplicate.";
  'x          "Push character x.";
    )         "Increment to get y.";
     ?        "Ternary operator. Replaces line with y if it was empty.";
      {    }h "Repeat while true. Leaves condition on the stack, which is the output string.";
       _o     "Duplicate line and print.";
         No   "Push string with newline and print.";

OPの明確化後、以下の仕様がより明確になります。

l{_o9c)o1}g

ただし、OPが私のコメントに返信するまで、投稿を更新します。


16
私はあなたのプログラムが偶然一致することを好みます/no/i
ケビン-復帰モニカ14

20

Brainfuck-38バイト

++++++++++[>++++++++++++>+<<-]>+[.>.<]

+-<>.,[]とにかく言語のすべての意味のある文字であるため、10または121は使用しませんが、かなり単純に計算します(0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 = 10、10 * 12 + 1 = 121)。

これはおそらくインタプリタに依存しますが、^C私のマシンでは死にます。

ブレインファック-(63-10)= 53

++++++++++[>,]<<[[<]>>[[.>]<[<]>]]>[>++++++++++++>+<<-]>+[.>.<]

@fryそのように39以下にできませんでした。とにかく10が必要なので、1から120を足すか、11から1を引いて、前者の方が短くなります。
地下

ええ、私はあなたが10を再利用したことに気づきました、申し訳ありません:P
FryAmTheEggman 14

10 * 12 + 1の代わりに、11 * 11ではありませんか?それはあなたに文字を保存できると思います。
ProgramFOX 14

@proそのように39未満にはできませんでした。とにかく10が必要なので、1から120を足すか、11から1を引いて、前者の方が短くなります。
地下

@undergroundmonorailああ、なるほど。
ProgramFOX

18

Python 3、27バイト

少なくともCPythonとJythonで動作します。

while 1:print(str(help)[1])

SIGINTはそれを停止します。


18
python2にすると、に短縮できますwhile 1:print`help`[1]
地下

4
ハハ、いいね。私はPythonにバック
ティック

あなたは使用することができchr(11**2)、同様の数文字を保存するために
user1354557

2
@RamchandraApteの使用は許可されていません121
ジョナサンラインハート14

17

マーベラス 14バイト

0978
]]/\++
!!

これは非常に簡単です。「/ \」デバイスは左右に2つのコピーを配置し、右側のコピーは増分されて++からボードから落ちて印刷されます。]]STDINは空ですが、そうでない場合はSTDIN上の最初のバイトが落ちることができます場合、デバイスは、右のいずれかの大理石をプッシュ。これにより、!!デバイスがトリガーされ、ボードが終了します。そのため、stdinに何かを入力するまでy \ nが出力されます。

これは、Pythonインタープリターでのみ機能します。


17

Pyth、10 9 6バイト-10 = 0 -1 -4

#|zePG

私は何年もの間、私が満足しているものを手に入れようとしてきました。基本的に以下に変換します:

#      = while True
(implied print)
|      = or
z      = (automatically initialized from stdin)
ePG    = second-to-last lowercase letter = 'y'

「z」変数はstdinから初期化され、その後、値は単純に使用されます。ascii値を明示的に記述せずに取得する簡単な方法を見つけました。
swstephe 14

「^ 11 2」から「^ hT2」に切り替えて、キャラクターを保存しました。
swstephe 14

こんにちはswstephe、この言語の別のユーザーに会えるのを楽しみにしています!いくつかのゴルフ:#と同等の機能がありW1ePGを取得するyよりもはるかに短い方法ですC^hT2
isaacg 14

おかげで、私はそれらの変更を適用します。このゴルフのことはまだ新しい。私はPythが好きですが、さらにいくつかのコンテキスト機能とビット操作が必要でした。
swstephe 14

13

C#、81 78 76バイト

他の言語と競合することはできませんが、とにかくここにあります:

class A{static void Main(){for(;;)System.Console.WriteLine((char)('x'+1));}}

Ctrl+ を押すと、SIGINTで強制終了できますC

ボーナスはありません。取得に10バイト以上かかるためです。


使えないのwhile(1)?2文字を保存します。
歯ブラシ14

@toothbrush私はそれを試しましたが、それはC#では機能しません。
ProgramFOX 14

1
for(;;) 動作するはずです。
core1024 14

2
何らかの理由で、このコードにはまだありyます。調べてくださいSystem
TheNumberOne

4
@TheBestOne System削除できません。これは.NET Frameworkの最上位の名前空間であり、すべてのクラス/他の名前空間が含まれているため、ここではリフレクションは役に立ちません。しかし、それが無効かどうかはわかりません。Ramonのコメント「yまたは\ nに評価されるものはありません」を参照してください。これはに評価されませんy。ラモンにこれが有効かどうかを尋ねるために質問にコメントを残しています。
ProgramFOX 14

10

Java、178

class C{public static void main(String[]a)throws Exception{for(char c='x'+1;;)((java.io.PrintStream)Class.forName("java.lang.S"+c+"stem").getField("out").get(null)).println(c);}}

印刷にはが必要Systemですが、y文字は禁止されています。したがって、リフレクションを使用する必要がありました。


FileDescriptor.outは私が意図したものです。
TheNumberOne

あなたは、保存することができます;置くことによってchar c='x'+1;forそう、ループ宣言for(char c='x'+1;;)とにかくそこに空のセミコロンを持っているので
corsiKa

@corsiKa良い点。
Ypnypn 14

10

Perl:18バイト-10 = 8

文字列はSTDINからのものです。

$_=<>;{print;redo}

3
y\nSTDINからの入力を受信しない場合、繰り返し印刷されますか?そうでない場合、適切に模倣しませんyes
vurp0 14

@ vurp0 yesSTDIN結局入力を受け付けません:)
core1024 14

1
ありませんが、ここでのゴルフの質問では、入力を受け取らない場合は繰り返し印刷するように指定されていますy\n
vurp0 14

2
@ vurp0どこ?ストリームから読み取るプログラムは、入力なしでハングします。
core1024 14

@ vurp0質問に関するOPのコメントを参照してください。
nyuszika7h 14

9

ルビー、30 23 18バイト

loop{puts ?x.succ}

Ctrl+ を押すと、SIGINTで強制終了できますC

共有の改善のためのmanatworkに感謝します!


1
loop{puts [*?x..?z][1]}– 23文字、loop{puts ?x.succ}– 18文字
マナトワーク

@manatworkありがとう!更新しました。
ProgramFOX 14

8

Perl、26バイト

{print chr$=*2+1,$/;redo}

引数からのカスタム入力(yes実際に機能するような)、22バイト-10 = 12

{print @ARGV,$/;redo}

stdinからのカスタム入力、22バイト-10 = 12

while(<>){print;redo}

@mar Nitzのプログラムの長さはわずか14バイトで、リンクに非常に高い賛成のコメントがあります。これは、バイトカウントに含めるとファイル名が問題になるのではないかと言っています。これは私には合法的なようです。
地下

ああ、待って、質問の「あなたは\ "y \"を使うことはできません」という部分を見ませんでした。これが悪いことは決してありません
地下

その通りその通り。それを修正
ニッツ

6

C、64 55 53 45 40-10 = 30

main(int c,int**a){for(;;)puts(a[c>1]);}

プログラムに「y」という名前を付けて、「y」のみで呼び出す必要があるため、これにはあまり満足していません。したがって、$ PATHにある必要がありますが、最初のcodegolfが必要です。

代替案:

C、30(+ 1ファイル名)

main(){for(;;)puts(__FILE__);}

尊敬する同僚の@Matt Windsorと同じ手法を使用する

  • 編集:\ nの文字を丸くすると、短くなります
  • EDIT2:「int」は「char」より短い
  • EDIT3:その変数はまったく必要ありませんでした
  • EDIT4:少し未定義の振る舞いは誰も傷つけない
  • EDIT5:代替バージョンを追加

5

Linux Bash、33-10 = 23

read a; while :; do echo $a; done

Ctrl+ を押すと、SIGINTで強制終了できますC


1行のみを読み取り、同じ行を繰り返し印刷する必要があります。あなたのプログラムではありませんyesが、catプログラム。
jimmy23013 14

私の悪いことに、仕事の一日後にそれを試してはいけなかった。
オレース14

どうですかread a;for((;;));{ echo $a;}
core1024 14

5

さび、52文字

fn main(){loop{println!("{}",'Y'.to_lowercase())}}

yRustで生意気にならなければ、コンピューティングの優れた方法はないように見えます。安全に文字を処理するのが上手すぎました。私:

  • に非リテラル文字列を提供できないprintln!ため、トリックは許可されません。
  • 'x'Rustではcharは数字ではないため、1を1に追加できません。
  • ROT13はできません(Rustの標準ライブラリにROT13がないのはなぜですか?);
  • C文字列へのドロップ、数字から文字への変換など、非常に冗長で52cを超えることなく、安全でないことを簡単に行うことはできません。

コードボーナスの価値もありません。読み取りにstdinはエラー処理= 3が必要になるためです。

私が見つけたコード削減の多くは、コンパイラー環境でますますルールをフロートすることを伴うものでした。

さび、44文字(+ファイル名に少なくとも1文字)

fn main(){loop{println!("{:.1}", file!())}}

以下で廃止されました。ソースファイルの名前はで始まる必要があるため、これはおそらくカウントされませんy

編集:錆、36文字(35ソース、1ファイル名)

fn main(){loop{println!(file!())}}

上記のように、そのファイルを持っていると呼ばれるようにy(ありませんy.rsy)。ユーモラスなことに、Rustはソースをバイナリで上書きします!少なくとも私のマシンでは、その後バイナリは動作します。

さび、37文字(+ env K='y'プラットフォームに相当)

fn main(){loop{println!(env!("K"))}}

この1はさらに悪くなる:あなたは、環境変数を設定する必要があるKyではコンパイル時

編集:に設定Kした場合y\n、合計で35文字といくつかのフェイスパームlnでinをドロップできます。println!

fn main(){loop{print!(env!("K"))}}

特定のファイル名またはコンパイラフラグを要求するための通常のポリシーは、単にバイトカウントに含めることです。
マーティンエンダー14

@MartinBüttnerまあまあ。奇妙なことに、錆はコードゴルフに最適な言語ではないように思われます>:P
マットウィンザー14

あなたは1つを追加することができるx方法で、それは短いまだありません:(b'x' + 1) as char
Shepmaster

5

Linux Bash-19バイト

/ usr / bin / yesがない場合、または/ usr / bin / xesまたは/ usr / bin / zesがない場合、これはおそらく不正行為であり、失敗する可能性があります。

/usr/bin/[x-z]es $*

「yと評価されるものは何もない」というルールに違反しているのかもしれませんが、要件を満たしていると思います。そしておそらくyes、実際に実行して模倣することyesはルールに反しています。

これを少し最適化して(動作する可能性は低くなりますが)11バイトに減らすことができます。

/*/*/?es $*

コードに10バイト以上を追加せずにstdinから文字列を読み取ることで10ポイントのボーナスを取得する方法を理解できませんでした


2
/*/*/?es `line` 、または/*/*/?es `head -n1` 持っていない場合/usr/bin/line
jimmy23013

2
またはsed qのためにline
jimmy23013 14

5

DC、12

[30986Pdx]dx

出力のみy\n。stdinから読み取らないため、ボーナスはありません。

30986は0x790A(つまり「y \ n」)です。このPコマンドは、単純に数値を基数256に変換し、各基数256桁に対応する文字を出力します。


それはかなり賢いです、30986はどのように評価しy\nますか?
nyuszika7h 14

私は知っていましたPが、一度に複数のキャラクターができることを知りませんでした。
nyuszika7h 14

5

Common Lisp:(30-10)= 20

(format t"~@{~a~%~:*~}"(read))
  • (read) 入力ストリームから
  • 出力ストリームに出力: (format t ... )
  • すべてのformat引数(ここでは1つのみ)を反復処理します。~@{ ... ~}
  • ループ内で、各引数に対して:

    • 引数の~A後に改行を出力する~%
    • 現在の要素を前の要素に巻き戻す~:*(無限ループ)

ループを中断するにはCtrl+C、再起動オプション(続行/中止)でエラーを通知します。



3

ルビー、27バイト-10 = 17

これは、ボーナス付きの@ProgramFOXのソリューションです(ボーナスの質問を解決するのに9バイトかかりました)。

loop{puts ARGV[0]||?x.succ}

3

dc、21バイト-10 = 11

C1st?st[ltP[]ps0dx]dx

入力に包まれる必要があることに注意してください[]例えば、[no]あるため、?としてそれを実行し、入力、取るための唯一の方法であるdcコードを。


C2代わりに使用できます122。実際、私はそれが主張するだろう122 1-と置き換えることができるC1ようC1に明示的問題で禁止されていません
デジタルトラウマ

3

Commodore 64 Basic:14 13バイト

1?C|(11↑2):R╭

いつものように、Unicodeには存在しないPETSCIIの文字を置換しました。 |はを表すために使用されますがSHIFT+H、を表しSHIFT+Uます。デフォルトのCommodore文字セットが「y」として表示する文字ではなく、ASCIIの「y」(バイト値121)を出力することに注意してください。

BASICは、学習しやすい英語のようなプログラミング言語であると思われます。初期の方言の多くに存在するタイピングショートカットを使用すると、Perlより短く、読みにくいものが得られます。

編集:「シフトモード」では、小文字の「y」が10進値89でエンコードされるため、これは2バイト短くなります。非ASCII文字セットを使用して「ASCII値の使用を許可しない」ルールを回避することができますしかし、不正行為。

1?cH(89):rU

Unicodeに存在するすべてのWithを使用すると、C64で使用される完全な文字セットがどこかに存在しないことは驚くべきことです。
カスペルド14

@ kasperd、Unicodeのボックス描画文字は、ほとんどがIBMの「DOS」セットに由来し、文字セルの中央を通過します。PETSCIIのセットははるかに大きく、その多くは文字セルのエッジを使用します。U + 2502は、おそらくによって生成された垂直バーのまともな近似ですSHIFT+Hが、パイプ文字を入力する方が簡単です。`SHIFT + O」製「上端と左端のライン」に相当するものは何もありません。
マーク・

:「のrU?1 CH(89):」非常に良いが、あなたは「後藤1」「ファイル名を指定して実行」で置き換えることにより、1つのバイトを救うことができる
LeFauve

@LeFauve、ありがとう。また、ASCIIを出力するバージョンにも適用しました。
マーク14

3

AWK、38バイト

BEGIN{for(;;)printf("%c%c",60+61,5+5)}

標準入力の文字列を読み込むバリアント:14バイト-10 = 4

{for(;;)print}

しかし、両方を行うことはできないため(stdinが提供されていない場合は "y"に戻します)、カウントされるかどうかはわかりません...:o)

どちらもCtrl + Cで終了できます。


3

核分裂、5バイト

Rx+!N

これは、核分裂にとってかなり競争力があります。:)

制御フローは、で(1,0)右向きのアトムから始まりRます。x質量を120に設定し、+それを増分してを与え(121,0)ます。次に!、対応する文字(y)をN印刷し、改行を印刷します。ソースコードは端で折り返されるため、アトムはR再び通過し(今は何もしません)、x質量を120再び設定し、+それをインクリメントします...


3

C、32バイト

リトルエンディアンマシンと-O2を使用したコンパイルが必要です(スタックオーバーフローを回避するため)。

a=11*11;main(){main(puts(&a));}

2

PowerShell、27 − 10 = 17

param($s=$Host[1])for(){$s}

Pashでは動作しない可能性があります。より堅牢な代替案は

param($s="$(gal gh*)"[2])for(){$s}

2

Lua、42バイト-10 = 32

while 1 do print(...or('').char(90+31))end

Lua、49バイト-10 = 39

y=...or(string.char(60+61))while 1 do print(y)end

両方ともLua 5.1.4でテストされており、SIGINT(Ctrl+ C)で強制終了できます。


驚くばかり!私の母はLuaで書いていますが、野生では見たことがありません。(ちょっとお母さん!私が見たものを推測!
Signal15 14

2

Perl、31

以下に、実際にGNUのように動作するPerlバージョンを示しyesます。

{print "@ARGV"||chr 11**2;redo}

これは、perlのコマンドラインスイッチ(-l改行用)を使用しても問題ない場合に機能します。そうでない場合は、3文字長くなります。

{print "@ARGV"||chr 11**2,$/;redo}

typo:は、新しい行のスイッチです-l(ではありません-e)。
chris-l 14

また、ボーナスは、スクリプトがstdinから読み取ることができる場合のみです。ええ、本当のyesはstdinからではなく、引数から読み取ることを知っていますが、それはOP putのルールです。ボーナスを得るには、stdinからのものでなければなりません。
chris-l 14

@ chris-lはタイプを修正しました、ありがとう。ボーナスに関する申し立ても削除しましたが、答えはそのままにします:-P
xebtl 14

確かに、私自身の答えはあなたのものです。stdinの代わりに引数を使用します。私見、操作は実際のはいがすることを実際に行う人ボーナスを与える必要があります。
chris-l 14

2

CAPL 1.5+; 6入力なし; 10-10 =入力あり

追記
私は、彼らが質問を求めている正確に何をすべきかの組み込み関数を作ることができるようにカスタム言語は、しかし、私はCAPLを簡単にゴルフをするために作られた、質問にゴルフで許可されていないことをどこかに[リンク?]を読んだことが一般的では。ここで許可されていないと思われる場合は、お知らせください!

> <>Befunge(行間を移動して16進文字を使用して数字をプッシュできます)からアイデアを得ました。Rubyからのアイデアとゴルフをより簡単にするためのアイデアです。
CAPLは左から右に読み取り、行の終わりで1行下に移動します。最後の行である場合、プログラムは終了します。

まだ誰もこの言語を知らないので、できる限り説明しようとします。

yを出力します。6バイト

bb*.n<

bb* b16進であり11、そうbb*である11*11= 121、UTF-8と同等ですy。この値はスタックにプッシュされます。
.スタックから最上位の値をポップし、UTF-8として出力します。121スタックの一番上にある、インデックスがここでは無視されます。
n改行を出力します
<ポインターを行の先頭に戻し、その行を繰り返します。入力を期待していないので、入力を再要求せずにこれを安全に行うことができます。

入力から出力。10バイト、ボーナス後は0

i~a&{X:.)}

iユーザーからの入力を受け取り、スタックの一番上にUTF-8としてプッシュし、その後、長さをプッシュします。すなわち、[72,101,108,108,111,5]
~スタックからポップ数は、その後バイトの量を逆転させます。すなわち、[111,108,108,101,72]
a16進数のfor 10、改行文字
&{...}無限ループを作成します。入力があるので、ポインターを行に戻すことはできません。関数を下の行に配置することで1バイト安全になりますが、このチャレンジでは改行を使用できません。
Xスタックから一番上の値を削除します(ループのインデックス)
:.一番上の値を複製し、UTF-8として出力し
)ます。([1,2,3,4,5]-> [5,1,2,3,4]

ただし、これは、改行で始まり、入力、改行、入力などの出力を開始することを意味します。改行で開始できない場合は、次のコードを使用します。ボーナス。

iXa#~&{X:.)}

ここでの唯一の新しいコマンドは#、スタック上のアイテムの量をスタックにプッシュします。
1をi追加してから改行を交換する方が、長さを削除して再度取得するよりも長いため、長さをから削除しました。

楽しみのために、ここに「Hello World」プログラムがあります

"Hello World"#~
#?!;.<

?!操作は> <>さんと同じです


実際、制限は質問が投稿されたに公開されたカスタム言語/ライブラリ/機能に適用されます。
マナトワーク

@manatworkそれは私の答えが無効であることを意味します。説明をありがとう。私はこの言語を作成し、ゴルフチャレンジをいくつかして、将来のバージョンで改善できる点をテストしたいと考えました。
チャーリー

私の意見では、これは無効ではなく、勝つ資格がないだけです。制限の目的は不正行為を防ぐことでしたが、言語の新鮮さに関する声明を含めたので、これは不正行為の試みとはみなされません。
マナトワーク

2

APL(Dyalog APL)5-10 = -5バイト

警告:文書化されておらず、サポートされていない機能/バグに依存しています。

⎕←⍣≢⍞

空STDINは、空行(ない「Y」)、印刷許可されている示唆されているが

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

 末尾に改行があるSTDOUT、

 取得

 まで繰り返し

 とは異なります

 STDIN

つまり、決してではありませんが、スレッドを一時停止することで中断できません。


うーん。バグを乱用しています。興味深い。
マシュー盧

@MatthewRoh虐待ではなく使用。「機能」は、適切な実際の関数ではないため、代入に演算子を使用しているため、実際にはオペランドとして適格ではありません。それでも動作します
...-アダム

2

> <>、6バイト

b:*oao

;最後にa を含めないことで、> <>はSIGINTによって解放されるまで泳ぎ続けます。

説明

b:*oao
b         Push 11
 :        Duplicate
  *       Multiply top elements to get 121
   o      Print as character
    a     Push 10
     o    Print as character (yielding '\n')
          No program terminator, so our ><> will 
          keep on swimming this path forever.
^----' 


> <>、17-10 = 7バイト

前の方法は非常に退屈な解決策なので、ここにstdinからの入力を受け取る方法を示します。この人権侵害への入力を供給するデフォルトの方法という事実> <>プログラムがありecho 'input' | fish.py yes.fishecho提供\nの文字を。

 i:0)?!v
0r}o:r~<

説明

 i:0)?!v     Load STDIN into the stack (reversed)

             NOP           <----------,
 i           Push a byte from STDIN   |
  :          Duplicate top element    |
   0         Push 0                   |
    )?       If (i > 0):              |
      !        Wrap around  ----------'
             Else:
       v       Move to the second part

0r}o:r~<     Print STDIN until halted

       <     Go right         <---------------,
      ~      Remove top element (duplicated   |
                -1 from EOF)                  |
     r       Reverse stack                    |
    :        Duplicate top element            |
   o         Output as character              |
  }          Rotate stack to right (go to     |
                next character)               |
 r           Reverse the stack                |
0            Push 0                           |
             Wrap around       ---------------'

0r最後に、我々はまだで逆転されるようにスタックを想定した場合、周りにラップすることによって発生するループSFORできるように-1トップに。


1

どうやらこれは完全にポータブルではありません。私 sys.version 2.7.9 (default, Dec 11 2014, 04:42:00) \n[GCC 4.9.2]ですので、もしあなたのものが違うなら、これはうまくいかないかもしれません。

Python 2-(76-10)= 66

import sys
s=sys.stdin;a=`help`[1]if s.isatty()else s.read()
while 1:print a

かなり長いですが、(10バイト以上かかりますが)ボーナスに行きたかったのです。入力のプロンプトを表示せずにstdinが空であるかどうかを確認するのは長いようです。

最初は、ボーナスをstdinではなく引数を取ると誤解しています。私はそのためのソリューションを誇りに思っているので、とにかくそれを投稿しています;)

Python 2-(52-10 +∞)=∞(無効!)

import sys
while 1:print(sys.argv+[0])[1]or`help`[1]

sys.argvは、0番目の要素がファイル名であり、すべての要素の後ワードがプログラムに与えられた引数であるリストです。リストの最後にfalsey値を追加します。引数がない場合、最初の要素はその偽の値です。それ以外の場合は、最初の引数です。a or bPythonでは、結果がどのようなものになるかを確認する最初の値を返しますa。falseの場合bFalse or b== が返されるので返されbます。


@fryできましたが、ユーザーにプロンプ​​トが表示されます。y\nstdinが空の場合、すぐに吐き出したいと思いました。
地下

@fryそれは奇妙です、私にとってはうまくいきます。cPythonに依存している可能性がありますか?他にアイデアはありません。
地下

良いアイデア、それについて
地下

r=raw_input();p=r if r else`help`[1]\nwhile 1:print p 52の文字
globby

1
うーん、すでに最初の行yには2番目の行も含まれているようです。
パエロエベルマン14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.