Pyth Practice 2


21

別の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)

私は言語固有の質問のアイデアが本当に好きです(そしてこれを支持しました)。しかし、PPCGでは言語固有の質問が嫌われると思いましたか?
ルイスメンドー

3
@LuisMendo質問の背後にある理由がCJam、Pythなどのゴルフ言語に対する一般的な嫌悪感である場合、またはOPが特定の言語のみを理解している場合、言語固有の質問は嫌われるだけだと思います。これは少し異なります。この質問は、主に(PPCG上で)人気のある言語の隠れた機能のいくつかを示すために設計されています。ある意味では、それはトリックのコレクションのようなものです。すべての言語に対応できるわけではありません。このトピックに関するメタ投稿を
次に示し

6では、数字は正の1桁の整数ですか?
xnor

@xnorこれらは正であると仮定できますが、複数の数字で構成されている場合があります。テストケースを変更します。
寂部

1
この質問はトピック間で終了するように投票します。なぜなら、これは、パーツ間の相互作用のないマルチパートの課題であるためです
pppery

回答:


9

59 58 56バイト

問題1:

j.tmLdS9Z (9バイト)

問題2:

MTjG (5バイト)(最初の文字は改行です)

問題3:

h.f_IZ1z (8バイト)

問題4:

%IQE (4バイト)

問題5:

,J.vz-zJ (8バイト)

問題6:

srXz\,d7 (8バイト)

問題7:

u+GE0 (5バイト)

問題8:

ss.DR~hZQ (9バイト)


2

66バイト

1. 10バイト:V9+mZN}hN9
2. 6バイト:jUT)jG
3. 8バイト:h.f_IZ1z
4.(参照実装)7バイト:&gQ0<QE
5. 11バイト:,sK-rzZG-zK
6. 7バイト:ssMcz\,
7. 8バイト:s<.Qx.QZ
8. 9バイト:ss.eXbkZQ


2

68 67 66 65バイト

タスク1

10バイト: V9m*d>dNS9

タスク2

5バイト:\nMTjG、ここ\nで改行

タスク3

9バイト: h.fqZ_Z1z

タスク4

5バイト: qQ%QE

タスク5

参照ソリューション、12バイト: A.ggk\Az,sGH

タスク6

7バイト: ssMcz\,

タスク7

8バイト: s<.Qx.Q0

タスク8

9バイト: ss.DVQUlQ


1

54バイト

目的のソリューションは次のとおりです。タスク8を除き、すべてのソリューションが見つかりました。

1. j.tmLdS9Z(9バイト)でマップを使用して左マップ、転置、ゼロで埋め
ます。2. \ nMTjG(5バイト)はマップで改行を使用します

4 。%IQE(4バイト)は、不変演算子に2つのパラメーター
5 が必要なユースケースを見つけました。、J.vz-zJ(8バイト).vは、文字列の最初のステートメントのみを評価し、残りの
6. は無視します。 7バイト)s "" = 0
7. u + GE0(5バイト)は、既知の数
8に達するまで減少します。ss.DVQUQ(8バイト)は、ベクトル化を使用して対角線を削除します。


くそー、リストでUやっlたのを忘れてた!
リルトシアスト

1
彼の母国語でisaacgを破ってうれしい。
スタン・ストラム

1

 60 59  57バイト

1. 9バイトj.tmRdS9Z


2. 6バイトjbUTjG


3. 8バイトh.f_IZ1z


4. 4バイト}sEU


5. 8バイト,K.vz-zK


6. 7バイトssMcz\,


7. 8バイトs<FxB.Q0


8. 11 10 7バイトss.DVQU 以前のバージョン:ss.e+<bk>bh

私は、このソリューションを開発していることに注意してください完全に私はかなり遅れて相手にしていますが、独立して他の回答の。


ナイスな試み。3番目の問題は8バイトです。
ジャクベ

そして、問題8の解決策が当時コンパイルされていなかったと確信しています。しかし、私はそれをテストしていません。
ジャクベ

@ジャクベ気づいてくれてありがとう!
Mr Xcoder
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.