ゴルフ練習場:ピス[閉店]


10

これは、Pythでゴルフするときに使用できるトリックと最適化に関する課題です。Pythゴルファーは、関係するトリックの多くを認識しているかもしれません。ただし、馴染みのないアプローチや構成が含まれる可能性があるので、行き詰まった場合はPythのヒントPythのキャラクターリファレンスをご覧ください。ソリューションはここでテストできます

目標: 8つの問題があり、それぞれに最適化するPythスニペットがあります。あなたの目標は、同等で短いものを作成することです。参照ソリューションは合計80バイトです。あなたの目標は、それを可能な限り上回ることです。

勝者は、最小の合計バイト数で8つの問題すべてを解決する提出物に行きます。タイブレイカーは以前の投稿です。

回答合計スコアを除いて、回答全体を台無しにしてください。自分の答えを提出する前に、他の人の答えを見ないことが意図されています。

送信ごとにすべての問題に回答し、対応するバイト数を提供する必要がありますが、改善できない場合はリファレンス実装を自由に使用してください。

詳細:質問で特定の値または出力qが必要な場合は、同等であることが望ましいため1!0同等です。質問が条件が真であるかどうかのテストを要求する場合、出力は、条件が真である場合は真実であり、条件が偽である場合は偽である必要がありますが、それ以上制約はありません。trueをfalseに、falseをtrueに交換することはできません。質問で印刷する必要がある場合、末尾の改行以外は印刷できません。

すべての回答は、この質問の投稿時点での最新のPythコミットに対して有効である必要があります。

問題1: Qのセットを指定して、任意の順序でQの要素を含むリストを出力します。

; 3 bytes
f1Q

問題2:リストを出力します[1, 1, 0, 0, 1, 1, 0]

; 9 bytes
[J1JZZJJZ

問題3: Qに正の整数を指定して、Qのすべての桁が正(ゼロではない)かどうかをテストします。

; 7 bytes
!f!TjQT

問題4: zの文字列を指定して、zに引用符が含まれているかどうかをテストします- "または'

; 9 bytes
|}\'z}\"z

問題5: Q = 1を「Win」に、Q = 0を「Tie」に、Q = -1を「Lose」にマップします。

; 20 bytes
@["Tie""Win""Lose")Q

問題6:印刷0123456789

; 6 bytes
sm`dUT

問題7: zの文字列を指定して、反転の数を数えます。

(インデックスijならば反転を形成するi < jが、z[i] > z[j])。

; 17 bytes
ssmm>@zd@zkrdlzUz

問題8: zのリストを指定して、隣接する繰り返し要素の数を数えます。

; 9 bytes
lfqFT.:z2

@ user1737909その答えは正しいです。常にtrueである関数でf1QフィルタリングQするため、常にセットのすべての要素を出力します。fその質問の目的を満たすリストを出力します。
isaacg 2016

パーツ間の相互作用のないマルチパートチャレンジは許可されないため、この質問はトピックから外れます。meta.codegolf.stackexchange.com/a/8464/45941
Martin Ender

回答:


9

52バイト

問題1:2バイト

    SQ

問題2:5バイト
    jC\f2

問題3:4バイト
    -0`Q
問題4:6バイト
    @z+N\'
問題5:17バイト
    %3>"LTWoiisene"hQ
または
    @c3"LoseTieWin"hQ
問題6:3バイト
    pMT
問題7:9バイト
    s>R_d.cz2
問題8:6バイト
    sqVztz
@xnorの問題4の解決策と私の問題(両方とも6バイト)を組み合わせると、4バイトの解決策が得られます。したがって、48バイトが可能です。


xnorは無効であるため、ソリューションをxnorと組み合わせることはできません(彼の回答に関する私のコメントを参照してください)。
orlp 2015

@orlp *無効なものを除いてすべてを組み合わせる;-)私の投稿にソリューションを追加しました。
ジャクベ2015

ああ、私は今わかります:)私は最適よりも6バイト(そしてカウント)悪いと思います。
orlp 2015

ああ!ありがとう!気づかなかった:)。削除します。
ベン

7

54バイト

タスク1、2バイトSQ
タスク2、6バイトj102 2
タスク3、5バイト*FjQT
タスク4、6バイト@z"'\"
タスク5、17バイト@c3"LoseTieWin"hQ
タスク6、4バイトjkUT
タスク7、7バイトs>M.cz2
タスク8、7バイトsqM.:z2



タスク4の回答は有効ですか。falseの場合は空白行が出力されるだけですか。
Maltysen 2015

@Maltysenはい、真の値""はFalse not ""です。
orlp 2015

3

58バイト

タスク1、2バイトSQ
タスク2、5バイトjC\f2
タスク3、6バイト!}Z Q
タスク4、8バイト|}\'z}Nz
タスク5、18バイト@c"Tie\nWin\nLose"bQ
タスク6、4バイトjkUT
タスク7、9バイトlf>FT.cz2
タスク8、6バイトsqVtzz


私は知りませんでしたV私はそのいずれかの免除てるので、(あなたが不等長オペランドにベクトル演算をやっているので、私はまだ完全には、それを理解していないが)、私は本当に考えたはずC\f= /
orlp 2015

@orlpはV等しくない入力を自動的に切り捨てます
Maltysen 2015

3

この投稿は、すべての回答にわたって最高のソリューションを蓄積するためのものです。改善策がある場合は、解決策とその解決策を最初に見つけた回答者を編集してください。

48バイト

1. SQ-2バイト、@ orlpによって最初にポストされた
2. jC\f2-5バイト、@ Maltysenによって最初にポストされた
3. -0`Q-4バイト、@ Jakubeによって最初にポストされた
4. @z`N-4バイト、@ xnorと@Jakubeの混合まだ答えがあります。
(質問を書いたとき、私はどちらか、それを見ていない)
5. @c3"LoseTieWin"hQ-最初@orlpによって掲示17バイト、
6 pMT- 3最初@Jakubeによって掲示バイト、
7 s>M.cz2- 7バイト、最初@orlpによって掲示
8 sqVtzz- @Maltysenが最初に投稿した6バイト


質問の前のPythバージョンに制限していますか?
オプティマイザ

1
「すべての回答は、この質問の投稿時点での最新のPythコミットに対して有効でなければなりません。」あなたが何を考えていたか聞いてみたいと思います。@Optimizer
isaacg 2015

Pythは常に進化していますよね?(他のゴルフ言語よりもはるかに速いペースで)。したがって、この数(48)は近い将来に簡単に40未満になる可能性が非常に高いです。また、これは練習課題であるため、最新のPythバージョンを使用して練習し、新しい課題に取り組むことが理想的です。
オプティマイザ

2

57バイト

1.(2)SQソート。
2.(5)jC\f2 変換f2.次いで塩基ASCIIヴァルに
3.(5)/`Q`0カウント'0'数文字列で。
4.(5)@z`\'文字列とのセットの共通部分を取ります"'"
5.(18)@c"Tie Win Lose"dQリストを分割して作成します。スライスして働かなかった。
6.(4)jkUT参加range(10)。どうやら自動的に文字列に変換されます。
7.(9)sm>d_d.:z逆よりも大きい部分文字列をカウントします。
8.(9)l@C,zz.:zリストのサブリストとリスト内の要素のペアの共通部分の長さ。参照ソリューションと同じ長さ。


#4のソリューションは無効です。たとえば、文字列te\\stは誤検知です。
orlp 2015

@orlpそれを別の短いソリューションに置き換えました。
xnor 2015
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.