プログラミングパズルとコードゴルフ

プログラミング愛好家やコードゴルファーのためのQ&A

4
分厚いパリンドローム
パリンドロームは楽しいですが、他の弦のいくつかは取り残されているように感じ始めています。これらの文字列をパリンドロームのチャンク配列に分割することで、これらの文字列をチャンキーな回文に変えることができます。 たとえば、文字列は、"abcabca"我々は文字で、それ文字を読めば回文ではありませんが、我々はそれ作るの3種類の方法持って分厚い回文を: ["abcabca"] ["a" "bcabc" "a"] ["a" "bc" "a" "bc" "a"] ご覧のとおり、分厚い回文性は非常に包括的な概念です。すべての文字列は、少なくとも1つの方法で分厚い回文に変換できます。 仕事 入力として文字列を受け取り、その回文的なchunkiness、つまり回文配列であるパー​​ティションの数を返すプログラムまたは関数を作成します。 テストケース OUTPUT | INPUT --------+--------------------------------------------- 1 | "" 1 | "a" 1 | "ab" 2 | "aa" 2 | "aaa" 3 | "abcabca" 4 | "abababab" 28 | "abcabcaabababababcabca" 1 | "bbbbabababbbbababbbaaaaa" 20 | "ababbaaaabababbbaaabbbaa" 5 …

20
ブー!ハロウィーンコードゴルフチャレンジ
長さ2文字以上の入力文字列を受け取り、文字列 ~BOO!~ (その文字列の先頭と末尾にスペースがある)を、両端にない文字列の一様にランダムな場所に追加するプログラムを作成します。 許可されていないサンプル入力:2または (空の入力) 許可されていないサンプル出力:Hello ~BOO!~ または ~BOO!~ Hello入力用Hello サンプル入力:Hello, World! サンプル出力:Hel ~BOO!~ lo, World!またはHello, Worl ~BOO!~ d! これはコードゴルフです。標準ルールが適用されます。バイト単位の最短コードが優先されます。 最短でスプーキーなプログラムをお持ちいただき、デニスにおめでとうございます!ハッピーハロウィン!

5
RTTTLの難読化
RTTTL(Ring Tone Text Transfer Language)は、恐竜が土地を歩き回った夜明けにノキアによって発明された音楽形式です。かなり粗雑な音楽(和音や何もなし)を考慮しており、フォーマットは非常にシンプルであるため、とてもクールだと思います。これを見てください: DejaVu: d=8,o=5,b=200: e, e, c, e, g, 2g4 フォーマットを分析しましょう。先頭の「DejaVu」の部分はタイトルです。これは10文字を超えることはできません。dとoは、デュレーションとオクターブのデフォルト値です。ノートでデュレーションまたはオクターブが指定されていない場合は、これらが使用されます。最後に、bは1分あたりの拍数です。 その後、歌の実際の音符がリストされます。ノートの形式はDPOです。Dはノートの長さ(1、2、4、8、16)、Pはピッチ(A、B、C、D、E、F、G、A#、B#です) 、C#、D#、E#、F#、G#)、およびOはオクターブです(Nokiaの実装では4〜8ですが、他の実装では異なります。チャレンジのために1〜8と言います) 。期間またはオクターブが指定されていない場合、デフォルトが使用されます。さらに、音符の後にドットを付けることができます-これは本質的にデュレーションを1.5倍にします。 ここの例では、デュレーションとオクターブがない2つのEノートがあります。つまり、デフォルトのデュレーションとオクターブ(8、または8分音符とオクターブ5)があり、CはデュレーションとオクターブがないC、EとG.最終ノートは、デュレーションが2(半音)でオクターブが4のGノートです。 フォーマットを確認したので、どのような課題がありますか?この課題は、実際にはRTTTLとあまり関係がありません。あなたの仕事は、「Hello、World!」を出力する難読化されたプログラムを作成することです (正確に)それは、少なくとも5秒の長さの有効なRTTTLソングでもあります。 RTTTLソングをテストするには、このサイトを使用してソングをMIDIファイルに変換し、MIDIプレーヤーで聴くことができます。これは人気コンテストです。幸運を! 編集:必要に応じて、MIDIをRTTTLに変換するためのWebサイトを次に示します。リンク EDIT2:この光沢のある賞金は7日間で勝者(最も投票された投稿)に授与されます。

18
しばらくして
この課題のために、次の形式で時間を記述しています。 hh:mm:ss いくつかの例: 12:34:08 06:05:30 23:59:00 課題は、開始時間として、時間、分、秒が経過した後に時間を出力すること00:00:00です。これをで開始したタイマーと比較でき00:00:00ます。 次に、入力(STDINを使用)と出力の例を示します。 Input: 1h20m5s Output: 01:20:05 Input: 0h100m0s Output: 01:40:00 24時間後、タイマーは自動的にリセットされます。 Input: 25h0m0s Output: 01:00:00 入力の形式は常に同じです:XhYmZs、X時間、Y分、Z秒(X、YおよびZが100000未満の整数で負でないことを想定) これはcode-golfであるため、最小のバイト数がこのチャレンジに勝ちます
15 code-golf 

7
角度の平均
ストーリー、またはこれを行う理由。 なし。この練習は完全に無意味です...あなたがスティーブンホーキングでない限り。 チャレンジ 角度のリストが与えられたら、それらの角度の平均を見つけます。たとえば、91度と-91度の平均は180度です。これを行うには、プログラムまたは関数を使用できます。 入力 角度測定を表す次数値のリスト。あなたはそれらが整数であると仮定するかもしれません。任意の便利な形式で入力するか、関数の引数として提供できます。 出力 入力された値の平均。平均値に複数の値が見つかった場合は、1つだけを出力する必要があります。平均は、その値として定義されます 最小化されます。出力は(-180、180]の範囲内にあり、小数点より少なくとも2桁正確である必要があります。 例: > 1 3 2 > 90 -90 0 or 180 > 0 -120 120 0 or -120 or 120 > 0 810 45 > 1 3 3 2.33 > 180 60 -60 180 or 60 or -60 > 0 15 …

5
隠された電力計算機
私がいつもポケモンを愛してきた理由の1つは、そのような単純に見えるゲームのために、非常に多くの複雑さの層があるためです。隠された力の動きを考えてみましょう。ゲームでは、隠されたパワーのタイプとパワー(少なくともジェネレーションVIの前)は、それを使用するポケモンごとに異なります!それはかなりクールですよね?さて、隠し力の種類と力はランダムに生成されないと言ったら驚かれますか? すべてのポケモンゲームでは、すべてのポケモン(パーティの1つだけでなく、すべてのポケモン)には6つの内部に格納された整数があります(1つはHP統計、1つは攻撃統計、1つは防御統計、1つは特別な攻撃統計、 1つは特別な防御の統計用で、もう1つは速度の統計用))個々の値、またはIV と呼ばれます。これらの値の範囲は0から31であり、基本的にポケモンの全体的な統計に影響を与えるいくつかの要因の1つです。ただし、Hidden Powerのタイプとパワーも決定します! Generation IIIからV(アルゴリズムを実装する世代)では、Hidden Powerのタイプは次の式で決定されます(フロアブラケットに注意してください。つまり、結果を切り捨てる必要があります)。 ここで、a、b、c、d、e、およびfは、HP、攻撃、防御、速度、Spの最下位ビットです。攻撃、およびSp。それぞれ防衛IV。(最下位ビットはIV mod 2です。)ここで生成された数値は、このチャートを使用して実際のタイプに変換できます。 0 Fighting 1 Flying 2 Poison 3 Ground 4 Rock 5 Bug 6 Ghost 7 Steel 8 Fire 9 Water 10 Grass 11 Electric 12 Psychic 13 Ice 14 Dragon 15 Dark 電力については、同様の式が使用されます。 ただし、ここで、u、v、w、x、y、およびzは、HPの2番目に重要度の低いビット、Attack、Defense、Speed、Spを表します。攻撃とSp 防衛IV(再びこの順序で)。(2番目の最下位ビットは最下位ビットよりも複雑です。IVmod 4が2または3の場合、ビットは1です。それ以外の場合は0です。言語に何らかの組み込みまたは少なくともより賢い方法がある場合これを行うには、おそらくそれを使用する必要があります。) 既におわかりのように、ここでの課題は、HP、攻撃、防御、速度、Spを表すSTDINを介してスペースで区切られた6つの整数を取り込むプログラムを作成することです。攻撃とSp ポケモンの防御IV(この順序で)およびそのポケモンの隠された力のタイプと力を出力します。 サンプル入力: …
15 code-golf  number  game 

3
1つのライナーを生成する迷路
有名なC64ベーシックワンライナー 10 PRINT CHR$(205.5+RND(1)); : GOTO 10 スラッシュとバックスラッシュの迷路を印刷します。 \\/\\\//\/\////\\/\/ \/\///\\///////\//\/ /\\\//\//\////\\//\\ \////\//\//\/\\\\\\/ /\/\\///\\\\/\\\\/\\ \/\//\\\\\\//\/\//// /\//\\///\/\///\//// \/\\\//\\/\\\//\\/\/ //////\\/\\/\/\/\/// \\/\/\\////\/\/\\/\/ stdinの斜めの壁で作られたそのような迷路を読み、壁の文字「#」で構成される水平および垂直の壁で同じ迷路を印刷します たとえば、小さな迷路 /\\ \\/ /// に変換する ##### # # # # # # # # # # ##### # # # # # ######### ##### 正確には、分離された各壁セグメントの長さは5文字で、隣接する壁セグメントは角を共有します。スラッシュとバックスラッシュのマトリックスで文字を右/左/上/下に移動すると、#マトリックスの垂直方向に2文字、水平方向に2文字の対角線変換に対応します。

12
コンパニオンマトリックスを作成する
あなたは孤独な多項式をたくさん持っているので、それらをいくつかの仲間(刺すことを脅さない)にしてください! 次数の多項式のn場合、n by nコンパニオンキューブ 行列があります。多項式の係数リストを昇順(a + bx +cx^2 + …)または降順()で受け入れる関数を作成する必要がありますax^n + bx^(n-1) + cx^(n-2)+…)で(両方ではなく)、コンパニオンマトリックスを出力ます。 多項式のc0 + c1x + c2x^2 + ... + cn-1x^(n-1) + x^n場合、そのコンパニオン行列は (0, 0, 0, ..., -c0 ), (1, 0, 0, ..., -c1 ), (0, 1, 0, ..., -c2 ), (...................), (0, 0, ..., 1, -cn-1) の係数x^nは1であることに注意してください。他の値については、残りのすべての係数をx^n。さらに、1は対角線からオフセットされます。 …

1
ゴルフをコーディングして
ゴルフをしたことがない場合、この質問で使用するゴルフ関連用語のリストを以下に示します ショット、ストロークとも呼ばれる:ボールがヒットするたびに、これはショットです。 ホール:ゴルフコースはホールに分割され、ゴールはできるだけ少ないショットで指定された場所から別の場所にボールを打つことです。 ティー:穴を開けるところ。 ピンまたはフラグ:穴を仕上げる場所 Fairway、Rough、Water、Green:ゴルフコースの機能で、実際の生活でボールをどのようにプレーするかに影響します。(それらがプログラムにどのように影響するかを以下に指定します) 私は明日ゴルフに出かけますが、時々、特定のヤードを打つためにどのクラブを使用するのかわからないことがあります。そこで、ショットごとにクラブとそのヤードを書き留めることにしました。 最初の仮定:すべての穴はティーボックスの真北にあります。 これらのヤードはすべて、ボールがどれだけ北に移動するかの可能性を測定します。ボールは、各クラブに指定された境界(両端を含む)の間のランダムな整数距離を移動します。 マスターゴルファーとして、私のショットには水平シフトがありません。これは、すべてのショットが直接旗に向かってまっすぐ進むことを意味します。 Club # Club Yardage 1 Driver 300-330 2 3-Wood 270-299 3 5-Wood 240-269 4 3-Iron 220-239 5 4-Iron 200-219 6 5-Iron 180-199 7 6-Iron 160-179 8 7-Iron 140-159 9 8-Iron 120-139 10 9-Iron 100-119 11 P-Wedge 80-99 12 S-Wedge 50-79 …

4
レイジープログラマーのXMLパーサー
バックグラウンド あなたは自動車販売会社のプログラマーとして働いています。今週のタスクは、さまざまな自動車メーカーから入手可能なモデルに関するデータを取り込み、最新モデルに関する情報をきれいに印刷するXMLパーサーをプログラムすることです。幸いなことに、テスト部門が提供したテストケースは1つだけです!それを渡すコードをより速く書くことができるほど、その週の残りの時間を先延ばしにする時間が増えます。 入力 入力は、テスト部門から提供されたまさにこのXMLデータです。一部の自動車メーカー、その自動車のシリーズ、およびこれらのシリーズのモデルに関するデータが含まれています。末尾の改行を想定できます。 <?xml version="1.0" ?> <products> <manufacturer name="Test Manufacturer 1"> <series title="Supercar" code="S1"> <model> <name>Road Czar</name> <code>C</code> <year>2011</year> </model> <model> <name>Ubervehicle</name> <code>U</code> <year>2013</year> </model> <model> <name>Incredibulus</name> <code>I</code> <year>2015</year> </model> <model> <name>Model 1</name> <code>01</code> <year>2010</year> </model> </series> <series title="Test series 22" code="Test"> <model> <name>Test model asdafds</name> <code>TT</code> <year>2014</year> </model> …

30
ランダムUUIDを生成
UUIDが必要です。あなたの仕事はそれを生成することです。 正規のUUID(Universally Unique IDentifier)は、特定のポイントにハイフンが挿入された32桁の16進数です。プログラムは、32桁の16進数(128ビット)をxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx(8-4-4-4-12digit)の形式で出力する必要があります。x。あなたの言語のPRNGが完璧であると仮定すると、すべての有効な出力は同じ確率で生成される必要があります。 TL; DR 32のランダムな16進数を数字の形式で生成し8-4-4-4-12ます。最短のコードが優先されます。 編集:16進数でなければなりません。常に小数のみを生成することは無効です。編集2:ビルトインなし。これらはGUIDではなく、一般的な16進数です。 出力例: ab13901d-5e93-1c7d-49c7-f1d67ef09198 7f7314ca-3504-3860-236b-cface7891277 dbf88932-70c7-9ae7-b9a4-f3df1740fc9c c3f5e449-6d8c-afe3-acc9-47ef50e7e7ae e9a77b51-6e20-79bd-3ee9-1566a95d9ef7 7b10e43c-3c57-48ed-a72a-f2b838d8374b 入力および標準の抜け穴は許可されません。 これはcode-golfなので、最短のコードが優先されます。また、説明を求めてください。
15 code-golf  random 

23
スクロールマーキーにする
前書き 80年代のro音を覚えていますか?30年前のようにね 携帯電話、インターネット、ATM、蛍光灯(それは何でしたか!)、スクロールマーキーはありません!ダメダメダメ!オンラインではなく、実際のもの、LEDライト付き。 ノスタルジックな雰囲気なので、スクロールマーキーを作成してください。 チャレンジ 1行の文字列を入力できるプログラムを作成します。プログラムでは、必要に応じてテキストを繰り返す80文字幅のスクロールマーキーを作成する必要があります。 ルール ユーザーは、入力としてプログラムに文字列を入力できる必要があります。文字列は、コマンドラインパラメータ、またはプログラムの実行中に入力された文字列です。 プログラムは、正確に80文字(可視)の文字列を継続的に印刷する必要があります。 文字列は、0.1秒ごとに更新する必要があり(多かれ少なかれ、タイミングを計りません)、反復ごとに文字を1ポジション左にシフトします。 文字列は「回転します」。ユーザーが指定した文字列の最後に、文字列の別のインスタンスが表示される必要があります。 プログラムは、改行なしで出力を1行で印刷する必要があります(「\ n」の代わりに「\ r」を使用します) プログラムは広告を無限に実行する必要がありますユーザーが割り込むまで、。 これはcodegolfなので、バイト単位の最短コードが優先されます。 10%のボーナスがあります(四捨五入アップ黒色の背景に赤色で印刷するための次の整数には)。 標準の抜け穴が適用されます。 Python 2.7のリファレンス実装 このプログラムはゴルフではありませんが、参照実装(およびサイズの上限)を提供します。 import time,sys s=raw_input()*99 while 1: for i in range(80): print s[i:i+80]+'\r', sys.stdout.flush() time.sleep(0.1)
15 code-golf 

16
手紙の番号
文字をアルファベットの位置に置き換える非常に単純な暗号が存在します。例えば、abcなります1 2 3この暗号で。 この課題は、この暗号の代替案です。 チャレンジ ASCII文字の入力を受け取り、スペースで区切られた次の文字列を出力するプログラムを作成します。 整数-26から26 手紙a通しj 出力は、STDOUTまたは使用言語の最も近い代替手段を介して行われます。 仕様書 大文字は無効にする必要があります。資本D例えばは以下のようになり-4、小文字は一方で、dだろう4。 数字は、対応するアルファに変更する必要があります。1であることa、など。入力のゼロはになりますj。 すべての非英数字(スペースを除く)は無視する必要があります。 スペースは0。 出力内の隣接するスペースは、単一のスペースに減らす必要があります。 Input: You + Me Correct Output: -25 15 21 0 -13 5 Incorrect Output: -25 15 21 0 0 0 -13 5 単一の末尾スペースまたは改行が許可されます。 例 Input: programming puzzles Output: 16 18 15 7 18 1 13 …

4
C(N)桁でA(N)/ B(N)を計算する
A、Bおよびの3つの数値シーケンスを考えCます。 A:f(n) = f(n-1)+f(n-2)で始まる再帰関係に基づくシーケンスf(1) = 3, f(2) = 4。したがって、シーケンスは次のように始まります。3 4 7 11 18 29 47 76 ... B:合成数、つまり素数(または1)ではないすべての整数:4 6 8 9 10 12 14 15 16 ... C:Piの数字: 3 1 4 1 5 9 2 6 5 ... 正の整数を考えるとN < 50、どちらかの関数の引数やSTDINとして、分数の小数の値を返すA(N)/B(N)とC(N)小数点以下の桁数。丸めの通常の規則が適用されます(N + 1番目の桁が5以上の場合は切り上げ)。のN桁目piがゼロの場合、整数を出力する必要があります。科学表記法/標準形式は、1000を超える数に対応しています。 これはコードゴルフであるため、バイト単位の最短回答が優先されます。 いくつかの例: N = 1: 0.750 N …

1
算術…トック…ティック…トック
この質問は、長い電話会議で立ち往生しているときにプレイしたいゲームによってもたらされました。 24時間制(00:00から23:59)の任意の2つの時刻が与えられた場合、基本的な算術演算のみを使用して、その間のすべての時間で有効な数学方程式をいくつ生成できますか? 入力: 24時間サイクルの有効な時間を表す2つの4桁の文字列(コロンなし)。 例: input = 0000、1300の場合 03:26 produces: "0+3*2=6" and "03*2=6" etc. 11:10 produces quite a few, including: "1*1=1+0" and "1=1=1^0" and "1=11^0" etc. 12:24 produces: "1/2=2/4" and "1=(2*2)/4" etc. 有効な操作は次のとおりです。 添加 引き算 乗算 除算(浮動小数点) べき乗 階乗 その他の許可される記号 括弧 等号 最短のコードが優先されます。 ノート 目標は、有効な式を含む回数ではなく、2回の間の有効な式の数を見つけることです。 入力として指定された2つの時間は、時間の範囲に含まれます。 可能な任意の方法で数字をグループ化できます。そのため、「1223」は「12 23」、「1 2 23」、「1 …

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