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

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

9
HexaGolf:Wordagons
参照:ロータタゴン チャレンジ 入力として文字列を指定し、その語彙を出力します。 語彙 ワードゴンゴンは、六角形の文字列を表す方法です。それでは、文字列から単語を作成してみましょうhexa。 まず、文字列の最初の文字から始めて、中央に配置します。 h 次に、文字列の次の文字を取り、六角形のレイヤーを追加します。 e e e h e e e 次に、次のレイヤーを追加します。 x x x x e e x x e h e x x e e x x x x 最後に、最後のレイヤーを追加します。 a a a a a x x x a a x e e x …

15
Transpile WordMath
私たちは皆、このようなオンラインの「数学hax」を見てきました。 Think of a number, divide by 2, multiply by 0, add 8. そして、魔法によって、誰もが8番になります! 言語 「WordMath」と呼ばれる上記のテキストの構文を使用するプログラミング言語を定義しましょう。WordMathスクリプトは、次のテンプレートに従います。 Think of a number, <commandlist>. これは基本的に、最初のアキュムレーターとして(STDINからの入力として)数値を取得し、その数値に対してすべてのコマンドを実行し、結果を出力します。 コマンドは区切り文字,(コンマ+スペース)で区切られます。有効なコマンドは次のとおりです(#負でない整数を表すことに注意してください)。 add #/ subtract #-アキュムレーターから値を加算/減算します。 divide by #/ multiply by #- floordiv指定された値によって乗算/アキュムレータ。 subtract from #-に似てsubtractいますが、acc = # - acc代わりにacc = acc - # repeat-最後のコマンドを再度実行してください。これを最初のコマンドにすることはできませんが、複数の連続した繰り返しをサポートする必要があります。 チャレンジ あなたの仕事は、入力として有効なWordMathスクリプトを取り、プログラムや関数を作成することです transpilesあなたのコードが入っている同じ言語で-有効なフルプログラムにそれを。 たとえば、私のコードがPython …

8
順列の鳩の穴の原理
数独のゲームでは、多くのプレイヤーが各スクエアに入れることができる数字を「ペンシルイン」することを好みます。 上記の行は配列として表すことができます: [[1,2,9], [6], [5], [7], [1,2,9], [1,2,9], [3], [1,2,4], [8]] ここで、a 4が行くことができる場所が1つしかないことに注意してください。これにより、上記のリストを次のように単純化できます。 [[1,2,9], [6], [5], [7], [1,2,9], [1,2,9], [3], [4], [8]] この課題の目的は、順列で可能な数のリストを取得し、どの可能性を排除できるかを推測することです。 別の例として、次の可能性の配列があるとしましょう。 [[0,1,3], [0,2,3], [1,2], [1,2]] 最後の2つの場所には 1と2を入力する必要があります。したがって、配列の最初の2つの要素からこれらの可能性を削除できます。 [[0,3], [0,3], [1,2], [1,2]] 別の例として: [[0,1,2,3], [0,2], [0,2], [0,2]] その不可能の両方のための唯一の1箇所がありますように、上記の可能性から順列を構築する1と3、あなたは空の配列を返すようにしたいでしょう。 可能性のリストを入力し、可能性の最大数が除去された後に残りの可能性を出力する必要があります。 特定の配列が不可能な場合は、空の配列を返すか、サブ配列の1つが空の配列を返す必要があります。 配列は整形式であり、少なくとも1つの要素があると想定できます。 サイズの配列が与えられたN場合、部分配列の数値は常に範囲内[0:N)にあると仮定できます。N <= 10 から0までのすべての数字N-1が存在するとは限りません 単一のサブアレイ内の番号は一意であると想定できます。 サブアレイに単一の可能性のみが含まれる場合、可能性を配列で表すか、単独で表すことができます。 [[1],[2],[0]]、[1,2,0]、[[1,2],0,[1,2]]すべて有効です。 …

18
ビビバイナリに変換
Bibi-binaryは、発音がおかしいと思われる文字で数字を表すために、Boby Lapointeによって発明された数値システムです。 あなたの仕事は、10進数をBibiバイナリに変換することです! 変換 数値は16進数(16進数)に変換され、各文字はそのBibiバイナリ名に置き換えられます。 0 = HO 1 = HA 2 = HE 3 = HI 4 = BO 5 = BA 6 = BE 7 = BI 8 = KO 9 = KA A = KE B = KI C = DO D = DA E = DE …

24
カンガルーシーケンスを計算する
バックストーリー 免責事項:カンガルーに関する情報が含まれている場合があります。 カンガルーはいくつかの開発段階を通過します。彼らは年をとって強くなるにつれて、より高く、より長くジャンプすることができ、空腹になる前に何度もジャンプすることができます。 ステージ1では、カンガルーは非常に小さく、まったくジャンプできません。これにもかかわらず、常に栄養が必要です。このようにステージ1のカンガルーの活動パターンを表すことができます。 o ステージ2では、カンガルーは小さなジャンプをすることができますが、空腹になる前に2つを超えることはできません。このようにステージ2のカンガルーの活動パターンを表すことができます。 o o o o o ステージ2の後、カンガルーはすぐに改善します。その後の各段階で、カンガルーは少し高く(グラフィック表示では1単位)、2倍にジャンプできます。たとえば、ステージ3のカンガルーの活動パターンは次のようになります。 o o o o o o o o o o o o o o o o o ジャンプにはエネルギーが必要なので、カンガルーは各活動パターンを完了した後に栄養を必要とします。必要な正確な金額は、次のように計算できます。 ステージnカンガルーの活動パターンの各oにその高さ、つまり1からnまでの数字を割り当てます。ここで、1は地面に対応し、nは最高位置に対応します。 アクティビティパターンのすべての高さの合計を計算します。 たとえば、ステージ3のカンガルーの活動パターンには、次の高さが含まれます。 3 3 3 3 2 2 2 2 2 2 2 2 1 1 1 1 1 …

17
ASCIIの大ピラミッド
前書き 紀元前2600年で、人々は現在ピラミッドを構築しています。彼らはすでにピラミッドの基礎を作ったが、どのように続けるか分からない。そこで、彼らはあなたに助けを求めました。 ピラミッドを作成するルールは非常に簡単です。前のレイヤーの上にあるレイヤーについては、次のステップバイステップのハンドガイドに従うだけです。 前のレイヤーの端を切り取ります。 /キャラクターの上にキャラクターがなければならず、\その逆もあります。これは、エッジを除くすべての文字に適用されます。 左端の文字は常にa /で、右端の文字は常に\です。 ピラミッドの基礎の例を見てみましょう。 //\/\/\\ 以下を残して、エッジを切り取ります。 /\/\/\ スラッシュをバックスラッシュで変更し、逆も同様です。 \/\/\/ 左端の文字は常にa /で、右端の文字は常にa \なので、次のように変更します。 //\/\\ このレイヤーを前のレイヤーに配置します。 //\/\\ //\/\/\\ 最上部に到達するまで続行します(次のようになります/\)。したがって、最終的には次のようになります。 /\ //\\ //\/\\ //\/\/\\ これは、出力する必要があるものです。 タスク ピラミッドの基礎(長さが3を超える)を指定すると、ピラミッド全体が出力されます。左端の文字が/で、右端の文字がであると安全に仮定でき\ます。基底の長さは常に偶数であると仮定することもできます。末尾のスペースを使用できます。ピラミッドが所定の位置にある限り、先行スペースの使用も許可されます。1つの末尾と1 つの先頭の改行を使用できます。 テストケース Input: /\\\ Output: /\ /\\\ Input: //\\///\/\ Output: /\ /\\\ /\///\ ///\\\/\ //\\///\/\ Input: /////////////\ Output: /\ /\\\ /////\ /\\\\\\\ …

1
ドメイン名の評価
ドメイン名の取引は大企業です。ドメイン名の取引に最も役立つツールの1つは自動評価ツールです。そのため、特定のドメインの価値を簡単に見積もることができます。残念ながら、多くの自動評価サービスを使用するには、メンバーシップ/サブスクリプションが必要です。この課題では、.comドメインの値を大まかに推定できる簡単な評価ツールを作成します。 入出力 入力として、プログラムはドメイン名のリストを1行に1つずつ取得する必要があります。各ドメイン名はregexと一致します^[a-z0-9][a-z0-9-]*[a-z0-9]$。つまり、小文字、数字、ハイフンで構成されます。各ドメインは少なくとも2文字の長さで、ハイフンで始まったり終わったりしません。.comそれが暗示されているので、各ドメインから省略されています。 入力の代替形式として、目的の文字から整数への変換を指定する限り、文字列ではなく整数の配列としてドメイン名を受け入れることを選択できます。 プログラムは、対応するドメインの評価価格を示す整数のリストを1行に1つずつ出力する必要があります。 インターネットおよび追加ファイル 回答の一部としてこれらのファイルを提供する限り、プログラムは追加のファイルにアクセスできます。また、プログラムは辞書ファイル(有効な単語のリスト)にアクセスすることも許可されています。これは提供する必要はありません。 (編集)プログラムがインターネットにアクセスできるように、この課題を拡大することにしました。プログラムにはドメインの価格(または価格履歴)を検索できないこと、および既存のサービス(いくつかの抜け穴をカバーするために後者)のみを使用するという制限があります。 合計サイズの唯一の制限は、SEによって課される回答サイズの制限です。 入力例 これらは最近販売されたドメインです。免責事項:これらのサイトはどれも悪意があるとは思われませんが、誰がそれらを管理しているかわからないため、これらのサイトへのアクセスをお勧めしません。 6d3 buyspydrones arcader counselar ubme 7483688 buy-bikes learningmusicproduction 出力例 これらの数値は実数です。 635 31 2000 1 2001 5 160 1 得点 スコアリングは「対数の差」に基づきます。たとえば、ドメインが300ドルで販売され、プログラムが500ドルで評価した場合、そのドメインのスコアはabs(ln(500)-ln(300))= 0.5108です。ドメインの価格が1ドル未満になることはありません。総合スコアは、一連のドメインの平均スコアであり、低いスコアほど優れています。 予想されるスコアを把握するために、36以下のトレーニングデータの定数を単純に推測すると、約のスコアが得られ1.6883ます。成功したアルゴリズムのスコアはこれよりも低くなります。 値は数桁にわたるため、データは異常値で満たされるため、対数を使用することを選択しました。平方差の代わりに絶対差を使用すると、スコアリングでの外れ値の影響を減らすのに役立ちます。(また、ベース2またはベース10ではなく、自然対数を使用していることに注意してください。) 情報源 ドメインオークションのWebサイトであるFlippaから最近販売された1,400以上の.comドメインのリストをざっと見てきました。このデータは、トレーニングデータセットを構成します。提出期間が終了したら、追加の月を待ってテストデータセットを作成し、それを使用して提出物を採点します。他のソースからデータを収集して、トレーニング/テストセットのサイズを増やすこともできます。 トレーニングデータは、次の要点で入手できます。(免責事項:単純なフィルタリングを使用して、いくつかの露骨なNSFWドメインを削除しましたが、いくつかはまだこのリストに含まれている可能性があります。本当の価格。 https://gist.github.com/PhiNotPi/46ca47247fe85f82767c82c820d730b5 以下は、トレーニングデータセットの価格分布のグラフです。x軸は価格の自然対数で、y軸はカウントです。各バーの幅は0.5です。左側のスパイクは、ソースWebサイトが最低5ドルの増分入札を必要とするため、1ドルと6ドルに対応しています。テストデータの分布はわずかに異なる場合があります。 0.2のバー幅を持つ同じグラフへのリンクを次に示します。このグラフでは、11ドルと16ドルの急上昇を確認できます。

8
ゴルフスコアラー
子供の頃、私はカードゲーム「ゴルフ」をよくプレイしていました。あなたの挑戦は、あなたがそれを受け入れることを選択した場合、ゴルフのハンドのスコアを計算することです。このカードゲームには9000を超えるバリエーションがあります1ので、プレイした覚えのあるルールに従っていきます。 ゲームのルール) あなたは6枚のカードでラウンドを終了し、できるだけ少ないポイントが必要です。 ジョーカーは使用されません。 エースと2はそれぞれ-1、-2ポイントの価値があります。 ジャックとキングはどちらも0ポイントの価値があります。 3から10のカードは額面価値があります。ただし、これらはペアリングするとキャンセルされます。たとえば、5は5ポイントの価値がありますが、2つの5はゼロの価値があります。3つの5は5ポイントの価値があり(最初の2つはペアリングされますが、3つ目はそうではありません)、4つの5は0の価値があります(2つのペアを作るため)。 クイーンズは15ポイントの価値があります。クイーンをキャンセルすることはできません。たとえば、クイーン2人は30ポイントの価値があります。 (チャレンジの)ルール 入力は整数の配列、または6つの個別の整数になります。あなたが好むもの。1はエースを表し、2〜10は2〜10を表し、ジャック、クイーン、キングは11、12、13を表します。出力は、上記のルールに従ったハンドのスコアです。すべての入力が有効であると安全に想定できます。たとえば、4回を超えて数字が表示されず、すべての数字がの範囲にあると仮定できます[1, 13]。入力と出力は任意の合理的な形式にすることができます。 テストIO: [11, 10, 3, 1, 2, 2] --> 8 [4, 5, 5, 3, 8, 7] --> 22 [2, 2, 2, 2, 1, 1] --> -10 (The lowest score possible) [12, 12, 12, 12, 10, 9] --> 79 (The highest …

22
PKCS#7パディング検証
暗号化では、PKCS#7パディングは、N≥1のバイト数を追加するパディング方式で、追加される各バイトの値はNに等しくなります。 たとえば、Hello, World!13バイトの16進数は次のとおりです。 48 65 6C 6C 6F 2C 20 57 6F 72 6C 64 21 長さ16にPKCS#7パッドを選択すると、結果は次のようになります。 48 65 6C 6C 6F 2C 20 57 6F 72 6C 64 21 03 03 03 そして、長さ20までパディングすることを選択した場合、結果は次のようになります。 48 65 6C 6C 6F 2C 20 57 6F 72 6C 64 21 07 07 07 …

30
ホフスタッターQシーケンス
定義 a(1)= 1 a(2)= 1 a(n)= a(na(n-1))+ a(na(n-2))n> 2の場合(nは整数) 仕事 正の整数を指定するとn、が生成されa(n)ます。 テストケース n a(n) 1 1 2 1 3 2 4 3 5 3 6 4 7 5 8 5 9 6 10 6 11 6 12 8 13 8 14 8 15 10 16 9 17 10 18 11 …

7
チーズを探す
更新: 6つの迷路があります。これらはコントローラーに含まれています。迷路のtar.gz形式とそれらの.bmpファイルがあり、ここで(Dropboxが)。そのリンクで迷路を増やすためのユーティリティもあります(アーカイブ内のmaze_4.txtファイルは正しくありません)。この時点で、自由に独自のエントリを実行し、スコアを更新してください。その方法の詳細は、下部に記載されています。質問やトラブルがある場合は、チャットで私にpingを送ってください。 あなたはマウスです。あなたは迷路にいます。チーズを探します。 概念 あなたは長方形のグリッド上に存在する迷路にいます。グリッドの各スペースには、次のいずれかが含まれます。 ! -通行不能な壁 -横断可能な空のスペース O -あなた、マウス + -チーズ、あなたの目標 同じ文字を使用して、コントローラーを変更する必要がないようにしてください。 各ターンで、あなたはあなたの現在の位置の北、南、東、西にあるタイルを与えられます。次に、移動する方向を出力する必要があります。チーズに着いたら勝ちます。少ないステップが良いです。 入力 次のように、stdinを介して入力が行われますnesw。各文字は、そのコンパスポイントのタイルを表します。たとえば、現在の状態が次のように見える場合 ! <--- Wall !O <--- You + <--- Cheese その後、文字列が与えられます! +!。 ゲームの終わりに、コントローラーは4つのゼロのストリングを送信します0000。この文字列を受信すると、プログラムは終了します。他の入力には0文字は含まれません。 他のすべての入力を無視してください。 出力 あなたは出力1文字にあるn、s、e、またはw、あなたが旅行したい方向を示すため、改行文字が続きます。 得点 各テストのスコアは、チーズを見つけるために必要なステップの数です。 総合スコアは、さまざまなサイズの一連の迷路にわたる迷路ごとの平均スコアの合計になります。すべての迷路は、長さ50の正方形内に収まります。 たとえば、6つの迷路のそれぞれを完了するのにボット100の移動が必要な場合、スコアは600です。 ボットが決定論的でない場合は、各迷路を10回試行し、その迷路のスコアとして平均を使用してください。最終スコアは、すべての平均の合計になります。 ルール 各迷路は50x50の正方形に収まります。 各迷路には、開始からチーズまでの有効なパスが少なくとも1つあります。 各迷路は完全に壁で囲まれますが、チーズは常に外壁にあり、本質的に迷路の出口として機能します。 壁にぶつかると、応募は失格となります。 提出に時間がかかりすぎる場合(私が判断したとおり、テストを開始すると)、失格となります。これは、主に無限ループを防ぐためです。ソフト制限は迷路ごとに1分になりますが、私はこれをいつでもどちらの方向にも変更する権利を留保します。 エントリーは確定的である必要はありませんが、ランダムすぎると、上記の点で失格になる可能性があります。 ある時点で、一連の迷路が解放され、将来の回答がそれらに向かって最適化されない可能性があり、それらは変更される可能性があります。 提出: 提出は、stdinを介して入力を受け取り、stdoutを介して出力を行う完全なプログラムです。提出物が迷路コントローラーと対話するため、これは重要です。自由に利用できない言語を禁止するつもりはありませんが、その言語にアクセスできない場合、他の誰かがテストを実行する時間を提供しなければならないことを知っています。 提出の実行方法に関する指示を含めてください。 あなたの提出物が決定論的であるかどうかを述べてください。そうすれば、複数回実行する必要があるかどうかがわかります。 テスト迷路 テスト迷路では、.キャラクターはチーズへの最短ルートを概説します。それらは(スペース)文字と同じです。これらは提出物には表示されません。コントローラはそれらをスペースに置き換えます。 …

9
KOTH:TNTランチャレンジ
これは、Minecraftのミニゲームに触発されました。ルールは非常に簡単です。走り回ってジャンプし、踏み込んだブロックはすべて消えます。目標は、最後の1つになることです。 ボットは完全なプログラムである必要があります。コマンドライン引数として入力を受け入れる必要があります。入力は「世界」のマップになります。以下に例を示します。 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxx xxxxxxxxxxxxxxxxxxxxxxxxxxx xxx xxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxx x xxxxxxxxxxxxx@xxxxxxxxxxx xxxxxx1xxxxxxxxxxxxx xxxxxxxxxxx xxxxxxxxxxxxxxxxxxxx xxxxxxxxxxx xxxxxxxxxxxxxxxxxxxx xxxxxxxxxxx xxxxxxxxxxxxxxxxxxxx xxxxxxxxxxx xxxxxxxxxxxxxxxxxxxx xxxxxxxxxxx xxxxxxxxxxxxxxxxxxxx xxxxxxxxxxx xxxxxxxxxx xxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxx xxxxxxxxxxxx xxxxxxxxxxxxxxxxx x x xxxxxxxxxx xxxxxxxxxxxxxxxxxxxx xxxxxxxxxxx xxxxxxxxxxxxxx xxxxxxxxxxxxxxxxx xxxxxxxxxxxxxx xxx xx3xxxxxxxxxx xxxxxxxxxxxxxxxxxxx xxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx …

28
#Hashtag_or_not
このコードゴルフチャレンジでは、ハッシュタグを検証します! #What_your_code_should_do 入力は文字列です。有効なハッシュタグであれば真の値を出力し、そうでなければ偽の値を出力します。 次の場合、文字列を有効なハッシュタグとして定義します... ハッシュ(#)で始まります。 ハッシュタグの直後に番号がありません(たとえば#2016USElection、有効なハッシュタグではありません)。 「特殊文字」(つまり、アルファベット、アンダースコア(_)、または数字以外の文字)はありません。 入力にはASCII文字のみが含まれると想定できます。(Unicodeを使用した場合も不公平になります。) #ルール 基本的なコードゴルフ規則が適用されます。 #例 真実: # #e #_ABC #thisisanunexpectedlylongstringxoxoxoxo #USElection2016 偽物: Hello, World! #12thBday #not-valid #alsoNotValid! #!not_a_hash

23
どのゴーストが欠落していますか?
このチャレンジでは、パックマンのゴーストのリストを指定して、どのゴーストが欠落しているかを出力する必要があります。できる限り数バイトでそれをしなければなりません 入力 入力は、文字列またはリストで構成されます。これには、いくつかのゴーストが含まれます。 まばたき 真っ黒 ピンキー クライド ただし、入力にはPac-Man(句読点付き)も含まれる場合があります。したがって、リスト内のアイテムの最大数は、任意の順序で5つになります。無効なアイテムはリストにないものと想定できます 出力 出力は、文字列またはリストで構成されます。これには、入力に含まれていないすべてのゴーストが任意の順序で含まれます。ただし、パックマンが入力に含まれている場合、すべてのゴーストは失われていると見なされます(彼がそれらを食べるため)。 テストケース input: Clyde output: Blinky, Inky, Pinky alternate output: Inky, Pinky, Blinky or one of the other 4 permutations input: Clyde, Blinky # or however you delimit it output: Inky, Pinky alt: Pinky, Inky input: Pac-Man, Clyde Output: Blinky, Inky, …
25 code-golf  string 

17
ヴァンダーモンドの決定要因
n値のベクトルが与えられる(x1,x2,x3,...,xn)と、対応するVandermonde行列の行列式を返します。 この決定要因は次のように記述できます。 詳細 プログラム/関数は、可変長を可能にする便利な形式の浮動小数点数のリストを受け入れ、指定された行列式を出力する必要があります。 入力と出力は、言語がサポートする値の範囲内にあると想定できます。ご使用の言語が浮動小数点数をサポートしていない場合、整数と見なすことができます。 いくつかのテストケース 2つの等しいエントリ0が存在する場合、対応するVandermondeマトリックスには2つの等しい行があるため、行列式が決定されることに注意してください。この欠落したテストケースを指摘してくれた@randomraに感謝します。 [1,2,2,3] 0 [-13513] 1 [1,2] 1 [2,1] -1 [1,2,3] 2 [3,2,1] -2 [1,2,3,4] 12 [1,2,3,4,5] 288 [1,2,4] 6 [1,2,4,8] 1008 [1,2,4,8,16] 20321280 [0, .1, .2,...,1] 6.6586e-028 [1, .5, .25, .125] 0.00384521 [.25, .5, 1, 2, 4] 19.3798828

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