タグ付けされた質問 「code-golf」

コードゴルフは、ソースコードの最小バイトで特定の問題を解決するための競争です。

2
ラットの迷路を構築するプログラム
あなたは研究助手として雇われ、ラットの迷路を構築する小さなプログラムを作成するように依頼されました。ラットボックスは常に62x22で、次のように、ラットの入り口(a)と出口(A)があります(入力1)。 #######a###################################################### # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #################################################A############ 次のように、プログラムはボックスをブロック(#)で満たし、ラット用のパスを残さなければなりません(出力1)。 #######a###################################################### ####### ###################################################### ####### ###################################################### ####### …
15 code-golf  grid  maze 

4
Shifty XORyption
プログラムまたは関数(またはプログラム/関数のセット)を作成して、次の仕様でデータを暗号化および復号化します。 暗号化 各バイトを相互にXOR演算することにより、入力のXORハッシュを計算します。 入力のすべてのバイトをこのハッシュでXORします。 結果を4ビット左にシフトします。 XORハッシュの最初の4ビットで左側を埋め込みます。 XORハッシュの最後の4ビットを右側に埋め込みます。 例 与えられた入力:"G0lf"(0x47306C66) XORハッシュを計算します。 0x47 ^ 0x30 ^ 0x6C ^ 0x66 = 0x7D ハッシュごとにすべてのバイトをXORします。 0x3A4D111B 期待される結果(シフトとパッドの後): ()"s¤Ñ\x11½"0x73A4D111BD ルール プログラム/関数は、入力/出力が実際のバイトである限り、選択したゴルフ言語(文字列、バイト配列など)で意味のある任意のタイプの入出力を行うことができます。たとえば、16進文字列を出力することはできません。 暗号化と復号化は、個別のプログラム(スコアはそれらの合計サイズになります)または単一のプログラムに分離できます。単一のメソッドは、暗号化または復号化する必要があるかどうかの引数を取ることができます。 暗号化の入力は、少なくとも1バイトのサイズであると予想されます。 復号化のための入力は、少なくとも2バイトであると予想されます。 出力で非印刷バイトをエスケープする必要はありません。

2
どうすれば人生でもっと多くのKlotskiを獲得できますか?
私はタイルパズルをスライドさせるのが大好きですが、最近は時間がありませんでした。したがって、スライディングタイルパズル、特にKlotskiパズルを修正するプログラムが必要です。 入力は次の形式になります。 ####### #001gg# ##.222# .###### ここで、#は壁、.オープンエリア、g目標、隣接する数字は異なるブロックを表します。あなたはそれを仮定することができます: 10ブロックを超えることはありません 同じ番号のブロックは2つありません すべてのブロックは壁で囲まれます グリッドは長方形です 0ブロックは、目標の正方形のすべてをカバーするために十分な大きさです。 有効な解決策があります 0すべてのゴールスクエアをカバーするようにブロックを配置する一連の動きを返す必要があります。ブロックは壁や他のブロックを通過できません。上記のパズルの場合、適切なシーケンスは 2L,1R,1R,1D,0R,0R,0R 2ブロックを左に1マス、1ブロックを右に2マス(ゴールの上)、次に1マス下に移動し、0ブロックを右に3マス移動することを表します。 実際には、上記の問題に対して機能するいくつかのシーケンスがあり、それらのいずれかを生成することは許容されます。ソリューションは最適でなければなりません。つまり、できるだけ少ないステップでパズルを解くシーケンスを作成する必要があります。 シーケンスは上記のように出力する必要がありますが、カンマ、改行、またはスペースで区切ることができます。末尾にコンマまたは空白があるかどうかは気にしません。妥当な時間で出力を生成する必要があります(以下のパズルでは最大120秒)。 パズル1: ..####.. ..#00#.. ###00### #......# #.1122.# ##3124## .#3344#. .##55##. ..#gg#.. ..####.. パズル2: ###### #1002# #1002# #3445# #3675# #8gg9# ###### パズル3: .####. ##1g## #22g3# #4255# #4.56# #.006# #7008# ###### パズル4: .####. ##00## #.00g# …

12
SUDSIシーケンスを生成する
SUDSI配列(SUの M、D ifference、S WAP、I ncrement)が表示されますではなくカオス的挙動を示すために、その好奇心整数配列です。次のように生成できます。 してみましょうSは、自然数の無限リストであります:1 2 3 4 5 6 ...。してみましょうSを、私は 1インデックス表す私の番目の要素S。したがって、最初は、 S 1は1、S 2は2などです(S 0はありません)。 S 1およびS 2から開始... それらの合計を計算します。 sum = S1 + S2 それらの絶対差を計算します(大きい方から小さい方を引いたもの): diff = |S1 - S2| Sの2つの値を和と差のインデックスで交換します。swap(Ssum, Sdiff) 作業しているSのインデックスを増やします。したがって、次回はS 2とS 3の合計と差を計算し、その後の時間はS 3とS 4などになります。 このプロセスを無期限に繰り返します。 このプロセスが適用されるSの最初のいくつかの段階を以下に示します。括弧[]は、合計および差分される2つの値を囲みます。 オリジナルS: [1 2] 3 4 5 6 7 8 …

4
アスキーアイスクリーム
Nの整数正にかかるプログラムや関数を記述し、プリント又は戻り、その上半分からなる半円であるN×Nアスキーアート列(「その下半分からなる下向きの三角形でsおよびVs」は、とパディングとして使用されるスペース。 つまり、ASCIIアイスクリームコーンを作成します:(N = 17の出力) ((((( ((((((((( ((((((((((((( ((((((((((((( ((((((((((((((( ((((((((((((((( ((((((((((((((((( ((((((((((((((((( VVVVVVVVVVVVVVVVV VVVVVVVVVVVVVVV VVVVVVVVVVVVV VVVVVVVVVVV VVVVVVVVV VVVVVVV VVVVV VVV V 例 N = 1〜5の出力を次に示します。奇数Nの場合、三角形は常に大きな半分でなければなりません。 V (( VV ((( VVV V (( (((( VVVV VV ((( ((((( VVVVV VVV V N = 101のペーストビンです。 そして、ここに未使用のPython 3リファレンス実装があります: N = int(input()) ic = …

8
ディスクリートベイカーズマップ
前書き ベーカーのマップは、混沌とした挙動を示す重要な力学系です。以下のように直感的に定義された単位正方形からそれ自体への関数です。 正方形を垂直に半分に切り、サイズが2つの長方形になるようにします0.5×1。 右半分を左上に積み重ね、サイズが1つの長方形になる 0.5×2 長方形を圧縮して1×1正方形に戻します。 この課題では、この変換の個別バージョンを実装します。 入出力 入力は、印刷可能なASCII文字の2D配列と2m×2n一部のサイズの空白ですm, n > 0。出力は、配列を使用して、次のように取得された同様の6×4配列です ABCDEF GHIJKL MNOPQR STUVWX 例として。最初に、配列の右半分を左半分の上に積み重ねます。 DEF JKL PQR VWX ABC GHI MNO STU 次に、列を文字のペアに分割し、各ペアを時計回りに90度ずつ独立して回転させ、背の高い長方形を「圧縮」して元の形状に戻します。 JDKELF VPWQXR GAHBIC SMTNUO これは、上記の配列の正しい出力です。 ルール 入力および出力形式は柔軟です。改行で区切られた文字列、文字列のリスト、または文字の2D配列を使用できます。ただし、入力と出力がなければなりません正確に同じフォーマットを持っている:あなたは、任意の有効な入力の上ご応募を任意の回数繰り返すことができなければなりません。 完全なプログラムまたは関数のいずれかを作成できます。最小のバイトカウントが優先され、標準の抜け穴は許可されません。 テストケース Input: 12 34 Output: 42 31 Input: Hell ! o d - lroW Output: lol …
15 code-golf  string  grid 

25
文字列を対応するRövarspråketに変換します
Rövarspråket Rövarspråketは、アストリッド・リンドグレンによるKalle Blomkvistに関する本からのスウェーデンの子供たちが演じる単語ゲームです。 基本的なルールは次のとおりです(Wikipediaより): すべての子音(発音ではなくスペルの問題)が2倍になり、その間にoが挿入されます。 母音はそのまま残されます。 いくつかの例: 「hello」->「hohelollolo」 "Minsvävareärfull medål"-> "MoMinonsosvovävovaroreärorfofulollol momedodålol" スウェーデン語の子音は英語のものと同じなので、プログラムはスウェーデン語と英語の両方のエントリで動作するはずです。 この場合、文字「y」は子音と見なされます-ほとんどの場合そうです。 あなたのタスク: 関数またはstdinを介して入力されたスウェーデン語の文字列を、同等のRövarspråketに変換するプログラムを作成します。バイト単位の最短回答が勝ちます!
15 code-golf  string 

21
セックス・ボブ・オンブスの簿記(現在の金額が低すぎるかどうかを確認してください)
信じられないかもしれませんが、Sex Bob-ombsは世界的に有名なバンドになり、現在世界ツアー中です!ブックキーパーとして、日々の財務を監督し、定期的なレポートを提供する必要があります。 数週間ごとに、発生した順番で費用のリスト(米ドル全体)を作成します。 たとえば、リスト 378 -95 2234 アカウントに378ドルが入金され、その後95ドルが出金され、その後2234ドルが入金されたことを意味します。 これらの値の累積合計がしきい値Tを下回らないようにする必要があります。これを行うプログラムを作成することにしました。 チャレンジ 単一の整数Tと整数のリストを取り込むプログラムまたは関数を作成します。整数のリストの現在の合計がTより小さい場合は、偽の値を出力するか、それ以外の場合は、真の値を出力します。 通常の入力方法(stdin、ファイルから、コマンドライン、関数への引数)を使用できます。 リストの先頭では、現在の合計は0です。したがって、正のTは結果が常に偽であることを意味します。 + 正の整数の前に来ることはありません。 リストには0を含めることができます。 リストは空かもしれません。 テストケース Tはこれらすべてで-5です。 偽物: -6 1 2 3 -20 200 -300 1000 真実: [empty list] -5 4 -3 -6 得点 最少バイトの送信が勝ちです。Tiebreakerは、投稿された最も早い投稿に進みます。 私がこれをすることを余儀なくされた残念なコメント。

4
因数分解!…ひどく
好奇心の強い子供は、数値または式を次の形式に分解できるプログラムを使用します。 p1^e1 * p2^e2 * ... * pn^en。に等しい指数1は省略されます360 = 2^3 * 3^2 * 5 子供はこの出力を新しい入力としてプログラムに入力しますが、^符号を理解していないため、対応する素数と指数を連結する1つ以上をスキップすることがあります。例えば(360 =) 2^3 * 3^2 * 5 => 2^3 * 32 * 5 (= 1280) これらの間違いのために、彼女は別の因数分解を取得する可能性があり、それを再度入力できます(0個以上をスキップします^)。彼女は、因数分解がそれ以上変化しなくなるまでプロセスを繰り返します(多分それ以上ない^か、出力を正しくコピーしたかもしれません)。 整数n(n>1)が与えられたすべての可能な数を昇順で出力するプログラムまたは関数を作成する必要がありますn。たとえば、入力16の最終的な因数分解は次のとおりです。(16 =) 2^4, (24 =) 2^3 * 3, (23*3 =) 3 * 23 入力の詳細: 入力は、より大きな単一の整数です 1 より大きい出力数を生成する入力は与えられません 2^31-1 1000出力以上の数を生成する入力は与えられません 出力の詳細: …

3
コインフリップシーケンスの選択を分析するプログラムを作成する
私の古い本のパズルでは、2人のプレーヤーがコインを繰り返し弾いたときに最初に現れると信じているコインフリップのシーケンスを選択するゲームが定義されています。(実際にはサイコロと奇数のサイコロが振られましたが、この小さな詳細は問題の等価性の観点では重要ではありません。) なお、プレイヤー1を選択した場合TTT、プレイヤー2を選択したがHTT、そのプレイヤー2が唯一の方法であるため、試合に勝つの7/8のチャンスがあるTTT前に来ることができますが、HTT最初の3つのフリップは、すべてのテールがある場合です。 あなたの仕事は、2つの選択されたシーケンスのうちの1つが最初に来る確率を推定するプログラムまたは関数を作成することです。プログラムは2行の入力(または引数として2つの文字列)を取り、それぞれが長さ10以下のシーケンスを表します。 HTT TTT そして、最初のプレイヤーが勝つ確率を小数または小数形式で出力します: 7/8 0.875 どの言語でもこれを行う最短のコードが優先されます。

6
2015をQRコードとして出力
ミッションは簡単です。番号2015をQRコードとして出力し、名前のファイルに書き込むだけですnewyear.png、PNG形式でれます。コードはいつでも有効である必要があるため、現在の年を使用しないでください。 テキストとしてのQRコードは次のようになります。 # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # …

4
10、10、10…いいですか?
序文 私が今日アーチェリー900ラウンドを撮影していたとき(10が6矢印で終わり、10が3矢印で終わり、合計90の矢印と最大スコア900)、この挑戦​​を考えました。 アーチェリー(FITAが提供するターゲットフェース [あなたが撃つ紙)で射撃していると仮定すると、]矢印ごとに最大スコア10を獲得できます。ターゲットフェースには直径が10から11のリングが含まれ、互いに入れ子になっています。内側のリングから外側に向かって、10ポイントから1ポイントまでカウントされます(11リングの場合、「X」としてカウントされる2番目の最も内側のリングがあります。より高い値)。観察する: もちろん、上の図に見られるように、FITAメトリックスコアリングを参照しています。よく見ると、最も内側のリングが見えます。これは色あせた点線で、スコアはマークされていません。それが私が言っていた「X」ですが、ボーナスを競わない限り、それに注意を払う必要はありません。 チャレンジ 入力として完全に正方形の画像(または必要に応じて画像ファイル名)を受け取る関数(または言語が関数をサポートしない場合は完全なプログラム)を作成し、いくつかの緑(HEX#00FF00、RGB(0、 255、0))いくつかのサイズのドット、およびスコアを返します。画像には緑の点以外のデータが含まれている場合がありますが、緑は常にまったく同じ色合いになります。 正方形の画像がターゲットの顔を表しており、最も外側のリングが4つのポイント(上中央、下中央、右中央、左中央)に接触していると想像できます。表現されたターゲット面は常に同じ比率で、すべてのリングの幅は入力ターゲット画像の幅のちょうど1/20になります。例として、入力寸法が400px x 400pxの入力画像が与えられた場合、以下に示すように、各リングの内側の幅は20pxであると想定できます。 明確化 2つの別々のリングに触れると、2つのリングのうち高い方がカウントされます ボーナスを試す場合を除き、ミスや「x」ケースを自動的に考慮する必要はありません。 あなたは緑の円が重なっていないと仮定することができます また、その緑の色合いの他のピクセルが画像にないことを仮定することができます 画像はPNG、JPEG、またはPPM形式のいずれかです(選択) この質問の投稿前に作成された場合、外部画像処理ライブラリが許可されます 1つのターゲット上のすべての緑色の円の直径が同じであると仮定できます 重複する円のボーナスを撮影する場合(hah)、画像内の少なくとも1つの円に別の重複する円がないと仮定できます。 標準的な抜け穴は許可されていません テストケース 次の2つのケースでは、それぞれ52を獲得する必要があります(または、ボーナスの場合は、1 'x'と1ミスの52)。 そして、この最後のテストケースは25を記録する必要があります。 ボーナス ミスの数(リングの外)も返す場合は-25バイト Xの量も返す場合は-30バイト(最も内側のxが画像の幅の3/100であり、10が画像の幅の2/100であると仮定します。1-9の比率は変更されません) 重複する円を考慮した場合、-35%バイトカウント これはコードゴルフであるため、最小バイトが勝ちます。楽しんで!

7
マジックボックスの問題
サイズがm * nの入力配列があります。配列内の各セルには、PまたはTが入力されます。配列に対して実行できる操作は、列の反転のみです。列を反転すると、その列のすべてのセルの文字が切り替わります(PはTになり、逆も同様です)。同じ文字で「x」個の行がある場合(PPPPなど)、ポイントを取得します。結果の配列が可能な最大数のポイントを持つように、配列を取り込んでソリューション(どの列を反転するか)を返すアルゴリズムを設計します。 注:最高のスコアをもたらす複数のソリューションがある場合、フリップの数が最も少ないものを選択してください。例: 入力配列: PPTPP PPTPP PPTTP PPPTT PPPTT 出力: 3 説明: 最高点をもたらす解決策:列番号を反転します。3 次に、元の配列は次のようになります。 PPPPP // 1 point PPPPP // 1 point PPPTP PPTTT PPTTT //Total: 2 points 列4と5を反転してスコア2を取得することもできますが、追加の反転が必要なことに注意してください。 任意の便利な入力形式を使用して2次元配列を表すことができます。また、2つの異なる(ただし固定された)値を表しP、およびを表すこともできますT。 これはコードゴルフなので、最短の回答(バイト単位)が勝ちです。
15 code-golf 

11
グラフを作成する
この課題でのタスクは、一連のディレクティブから無向グラフを作成することです。負でない整数ごとに1つのディレクティブがあり、それぞれが特定のグラフを新しいグラフに変換します。 ディレクティブ0:新しい切断されたノードを追加します。 指令 1:新しいノードを追加し、既存のすべてのノードに接続します。 ディレクティブm > 1:次数(隣接数)がで割り切れるすべてのノードを削除しmます。注0すべてで割り切れるm切断ノードは常に削除されますので、。 ディレクティブは、空のグラフから左から右に1つずつ適用されます。たとえば、シーケンス[0,1,0,1,0,1,3]は次のように処理され、素晴らしいASCIIアートを使用して説明されます。空のグラフから始め、次の指示に従って単一の頂点を追加し0ます。 a 次に、別の頂点を追加し、次の指示に従って、最初の頂点に接続し1ます。 a--b 0andの指示に従って、切断された別の頂点を追加し、次に接続された頂点を追加します1。 a--b c \ \ / `--d 0andの指示に従って、これをもう一度繰り返します1。 ,--f--e / /|\ a--b | c \ \|/ `--d 最後に、次の指示に従って、次数3の頂点aとを削除bし3ます。 f--e |\ | c |/ d これは、シーケンスによって定義されるグラフ[0,1,0,1,0,1,3]です。 入力 一連のディレクティブを表す、負でない整数のリスト。 出力 シーケンスによって定義されたグラフ内のノードの数。 テストケース [] -> 0 [5] -> 0 [0,0,0,11] -> 0 …

1
光沢のある球をレイトレースする
POV-rayをダウンロードし、この光沢のある金属球90年代スタイルをレンダリングしました。 あなたのタスクは同じことをすることですが、できる限り少ないバイト数でレンダリングエンジンを自分で実装することです。この正確な画像を複製する必要はありません-無限のチェッカーボードの上にある反射球の画像は、以下の基準を満たしている限り実行されます。 ルール: 画像は、無限のチェッカーボードの上に浮かぶ反射球を描写する必要があります。チェッカーボード自体と球体での反射の両方を画像に表示する必要があります。これが私たちが見ているものであることは視覚的に明確でなければなりません。これ以外にも、ジオメトリ、色、材料特性などの詳細はあなた次第です。 シーンにはある程度の照明が必要です。球体の部分は他の部分よりも暗く、視覚的には光がどこから来ているかを大まかに伝えることができるはずです。さらに、照明モデルの詳細はあなた次第です。(必要に応じて、独自の簡易照明モデルを作成できます。)球体は影を落とす必要はありません。 上記の2つの基準-光源によって照らされたチェッカーボード上の真に輝く球体のように見えるかどうか-は、投票を使用してコミュニティによって判断されます。したがって、答えが勝つには、正のスコアが必要です。 出力は少なくとも300x300ピクセルでなければなりません。画面に表示するか、ファイルに書き込むことができます。どちらでも構いません。 合理的な最新のコンピューターでコードを1時間以内に実行する必要があります。(これは寛大です-POV-rayは上記のシーンをほぼ瞬時にレンダリングします。) 組み込みのレイトレーシング機能は使用できません-レンダラーを自分で実装する必要があります。 これはcode-golfであるため、最短のコード(バイト単位)を持つ正のスコアのエントリが優先されます。ただし、きれいな絵を描いて(もちろんコードを短くしながら)最も多くの票を獲得するメタゲームをプレイすることもできます。 この課題はとてつもなく難しいように思えるかもしれませんが、ジオメトリが固定されているため、レイトレーシングによってそのようなシーンをレンダリングするアルゴリズムは非常に簡単です。実際には、出力画像の各ピクセルを反復処理し、数式を評価してそれがどの色であるかを確認するだけのケースなので、良い答えが見つかると楽観的です。

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