別のPythの練習の時間です。ここでは、Pythソリューションを使用した8つの問題ステートメントを紹介します。これらのソリューションは、Pyth初心者によって書かれています。Pythonの答えよりもはるかに短いため、彼はこれらのソリューションに非常に満足しています。しかし、あなたの仕事は彼をより良く見せることです。同等の短いプログラムを作成します。
これは、Pythでゴルフをするときに使用できるトリックと最適化に関する課題です。Pythゴルファーは、関連するトリックの多くを認識している可能性があり、それがソリューションの短縮につながります。ただし、一部の問題には、めったに使用されないいくつかの異常なアプローチが必要になります。実際に私が実際に見たことのないいくつかのトリック。ただし、バグや奇妙な動作を必要とするソリューションはありません。これはPythの設計者が意図したものではありません。すべての回答は、この質問の投稿時点での最新のPythコミット(2b1562b)に対して有効でなければなりません。Pythインタープリターを使用できます検査用の。現時点では最新であり、Pythに大きな変更が加えられることはないと思います。これにより、最適なソリューションが無効になったり、短いソリューションが可能になります。オンラインインタープリターは、新しいキャラクターリファレンスも備えています。それはかなり新しいので、何かが間違っていたり欠落している場合に備えて、古いドキュメントを使用することもできます(すべきです)。
目標:リファレンスソリューションの合計は81バイトです。あなたの目標は、可能な限りそれを打ち負かすことです。合計バイト数が最小の8つの問題すべてを解決する提出が勝ちです。Tiebreakerは提出日です。
もちろん、8つの問題すべての解決策を含む提出物のみが有効です。1つ(または複数)の特定の問題のスコアを改善できない場合は、参照実装を使用できます。
ソリューションは、参照ソリューションとまったく同じ出力を印刷する必要があります。オプションの末尾の改行を除きます。
これはPythのプラクティスであるため、Pyth言語で書かれたプログラムのみが許可されます。
回答:合計スコアを除き、回答全体をネタバレしてください。あなたがあなた自身のものを提出する前に、他の人の答えを見ないことを意図しています。>!を置くことでネタバレを作成できます。次のようなすべての行の前に:
>! Problem 1: V9m?>dNd0S9 (11 bytes)
>! Problem 2: VTN)VGN (7 bytes)
>! ...
難しい問題やささいな問題を選ばなかったことを願っています。多くの参加者とすべての人がPythについていくつかの新しい洞察を得ることを期待しています。ハッピーゴルフ!
問題1:
次の9x9マトリックスを作成して印刷します。
[1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 0, 3, 4, 5, 6, 7, 8, 9]
[0, 0, 0, 4, 5, 6, 7, 8, 9]
[0, 0, 0, 0, 5, 6, 7, 8, 9]
[0, 0, 0, 0, 0, 6, 7, 8, 9]
[0, 0, 0, 0, 0, 0, 7, 8, 9]
[0, 0, 0, 0, 0, 0, 0, 8, 9]
[0, 0, 0, 0, 0, 0, 0, 0, 9]
参照ソリューション(リンク):
V9m?>dNd0S9 (11 bytes)
問題2:
すべての数字とすべての文字を別々の行に印刷します。
0
...
9
a
...
z
参照ソリューション(リンク):
VTN)VGN (7 bytes)
問題3:
辞書編集的に最小の回文構造を見つけます。これは、小文字を含む入力文字列よりも辞書編集的に大きく、または等しく、入力文字列と同じです。
a -> a
abc -> aca
adcb -> adda
参照ソリューション(リンク):
hf&gTzqT_T^Glz (14 bytes)
問題4:
数値が範囲[0、入力数値)にあるかどうかを確認します。これはフロートでも機能するはずです。
4, 6 -> True
5.5, 6 -> True
6, 6 -> False
6, 6.1 -> True
参照ソリューション(リンク):
&gQ0<QE (7 bytes)
参照形式はto be tested value<newline>end value
です。ただし、別の入力形式を選択できます。重要なのは、問題のステートメントを達成して正しい結果を生成することだけです。
問題5:
「\ d + [a-zA-Z] +」形式の入力文字列を解析します。数字は実際には数字である必要があり、数字を含む文字列ではないことに注意してください。
'123Test' -> [123, 'Test']
参照ソリューション(リンク):
A.ggk\Az,sGH (12 bytes)
問題6:
1つまたは複数のコンマで区切られた数値の合計を計算します。文字列に少なくとも1つの数字があると仮定できます。
11,2,,,3,5,,8 -> 29
参照ソリューション(リンク):
svM:z",+"3 (10 bytes)
問題7:
数値0が得られるまで、入力から正の整数を読み取ります。すべての数値の合計を出力します。
参照ソリューション(リンク):
WJE=+ZJ)Z (9 bytes)
問題8:
主対角要素(左上隅から右下隅)を除く、正方行列のすべての要素を合計します。
参照ソリューション(リンク):
-ssQs.e@bkQ (11 bytes)