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

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

30
クレジットカード番号などを検証するためのLuhnアルゴリズム
チャレンジ (クレジットカード)番号を検証するためのLuhnアルゴリズムを計算する最短のプログラムまたは関数を作成します。 Luhnアルゴリズムの説明 RosettaCodeから、このチャレンジの目的のためのこのアルゴリズムは、次の入力例を使用して指定されています49927398716。 Reverse the digits, make an array: 6, 1, 7, 8, 9, 3, 7, 2, 9, 9, 4 Double the numbers in odd indexes: 6, 2, 7, 16, 9, 6, 7, 4, 9, 18, 4 Sum the digits in each number: 6, 2, 7, 7, 9, 6, …

30
お父さんのジョークは楽しい
私たちは皆、次のような古典的なパパのジョークを知っています: 誰かが自分の自己を説明する文を言います(I'm tiredまたはI'm confused)。 Hi <adjective>, I'm Dad!導入部は同じ形式(にI'm Peter従うのと同じ形式I'm hungry)に従うため、お父さん冗談愛好家が来て返信します。 あなたの仕事は、自己記述子の形式で入力を受け取り、適切な父親ジョーク形式を出力することですが、「お父さん」という言葉を使用する代わりに、プログラミングしているプログラミング言語の名前を使用しますに。 テストケース(Pythonによって解析されていると仮定): I'm amazing Hi amazing, I'm Python! I'm tired Hi tired, I'm Python! I'm hungry Hi hungry, I'm Python! I'm fat Hi fat, I'm Python! ここで、これらのテストケースがGolfscriptによって解析されていると仮定します。 I'm a programmer Hi a programmer, I'm Golfscript! I'm a question-writer Hi a …

22
「宇宙を旅しながら…」
太陽系の20の最大のオブジェクトの1つの名前が与えられます。あなたの仕事は、キロメートル単位で表した半径の近似値を返すことです。 これはコードチャレンジであり、スコアはコードの長さ(バイト単位)にペナルティ率掛けたもので、最悪の近似に基づいています。したがって、最低スコアが勝ちます。≥ 1≥1\ge 1 「私たちが宇宙を旅するように」は、ブラックサバスの「Planet Caravan」という歌の最後の行であり、後にPanteraにも取り上げられました。 太陽系オブジェクト ソース:ウィキペディア 注意:ランクは情報提供のみを目的としています。入力はオブジェクトの名前です。 n | Object | Radius (km) ----+----------+------------- 1 | Sun | 696342 2 | Jupiter | 69911 3 | Saturn | 58232 4 | Uranus | 25362 5 | Neptune | 24622 6 | Earth | 6371 7 | Venus | …

30
再起動後も文字列を保持するための言語の最短コード
あなたのプログラム: 2つのプログラム(両方とも同じ言語)を作成します。ストレージプログラムはSTDINから文字列を取得し、永続的な場所に保存し(以下を参照)、エラーなしで終了します。検索プログラムは入力を受け取らず、保管されたストリングを検索して、それをSTDOUTに出力します。 永続性の客観的テスト: ローカルマシンでストレージプログラムを実行し、ローカルマシンの電源を入れ直し、ローカルマシンで検索プログラムを呼び出すことができるはずです。この再起動テストに合格する限り、(Web上でも)必要に応じて文字列を隠しておくことができます。 テストケース: ストレージと検索: echo foo | Store Retrieve foo 繰り返しストアは上書きする必要があります(set()メソッドのように): echo foo | Store echo bar | Store Retrieve bar 繰り返し取得は非破壊的です(get()メソッドのように): echo foo | Store Retrieve foo Retrieve foo ストレージを呼び出す前の取得: これについて心配する必要はありません。検索プログラムは、ストレージプログラムが過去のある時点で実行されたと想定できます。 入力/出力の柔軟性。 人々は、これを厳密なSTDIN / STDOUTから標準のIOルールに拡張するように頼まれました。抜け穴が多すぎるため、できません。一部の標準IOオプションでは、入力が永続的な方法ですでに保存されています。たとえば、「プログラムはファイルから入力を取得できます」。厳密なSTDINとSTDOUTよりも柔軟になりたいが、水門を開かない。 標準のIOルールスレッドから、課題を解決しないものを選択しています。 必要に応じて、プログラムはGUIプロンプトおよびコマンドラインプロンプトを介して入力を取得できます。 プログラムは画面に表示することで出力できます。これにはGUIダイアログが含まれます プログラムはコマンドライン引数を介して入力を取得できます プログラムはSTDERRに出力できますが、実際にはエラーをスローすることはできません。 代替を使用する場合、ユーザー対話型である必要があります。ユーザーは、入力をプログラムにパイプする、プログラムが提供するプロンプトに入力する、またはプログラムのコマンドライン引数として入力を入力する以外に、他の作業を行う必要はありません。ユーザーは、検索プログラムを実行して画面に出力を表示したり、STDOUTまたはSTDERRに送信したりする以外に何もする必要はありません。 許可される仮定: 2つのプログラムは同じディレクトリで実行されます プログラムには、そのディレクトリに対する読み取り/書き込み権限があります 作成したファイルは再起動後も存続します(一時ディレクトリにはありません) 文字列の一部ではなかった1つの末尾の改行が許可されます。他の末尾の空白はありません これはコードゴルフであり、スコアは両方のプログラムのバイトの合計です。

5
TryItOnquineチャレンジ
(この投稿とチャットに関するその後の議論に基づいています-また、TIOのDennisに感謝します!) 挑戦 PowerShellなど、TryItOnlineサイトで現在使用可能な言語を選択します。ときにそのようなことを任意の入力を取らない、そのページで、その言語で書くコード、実行ボタンをクリックすると、そのページの出力がまったく同じ「プレーンURL」フィールドにあるものとするときの保存/ストア代わりにボタンをクリックします。 架空の例として、aaaこれがPowerShellでこれを解決するためのコードであったとします。その後、クリックした結果実行してaaa上のコードとしてhttps://tio.run/#powershellSHOULD出力https://tio.run/##K8gvTy0qzkjNyfn/PzEx8f9/AA時にも「プレーンURL」フィールドで、保存/ストアボタンをクリックします。 得点 結果のURLは、この課題へのご提出です。勝者は、バイト単位で測定された最短URLです。上記の例では、URL https://tio.run/##K8gvTy0qzkjNyfn/PzEx8f9/AAは44バイトのチャレンジへの送信です。このチャレンジの残りを実行する最短のURLがチャレンジに勝ち、ブラウニーポイント(ポイントは交換不可)を獲得します。可能な限り明確な最小の長さが存在する場合、2つの提出の長さが同じである場合、以前の提出が優先されます。 URL生成 これがリポジトリ内のURL生成アルゴリズムの始まりです。メインコード領域の取得方法、余分な要素の追加、文字列の収縮とBase64の変換、および##先頭への追加などを確認できます。ここでは詳しく説明しません。課題の一部は、URLがどのように生成されるかを解析して理解し、前述のアルゴリズムの潜在的な癖を悪用することです。 ルール/説明 実際のコードは入力を受け取らず、出力としてquine-URLのみを生成する必要があります。 -移入する必要がある唯一のテキストフィールドは、URLにクリックこの手段があるCode、Header、Footerまたは対応する「コンパイラフラグ」フィールド。InputそしてArgumentsフィールドが禁止されており、未使用/空のままにしなければなりません。[ 実行 ]ボタンをクリックすると、Outputフィールドのみが変更されます。このチャレンジではDebug、すべての状況でフィールドが無視されます。 通常のクインルールは、可能な範囲でコードに適用されます(たとえば、コードはを介して独自のソースコードを読み取ることができません.code.tio)。 提出物にコードがどのように機能するかの説明を含めてください。 GitプルリクエストをTIOリポジトリに送信して「トリック」URLまたはショートカットなどを作成することにより、「チート」クインを送信することは許可されていません。 同様に、特定の言語を更新して「トリック」URLを生成するプル要求を送信することは許可されていません。 Dennisのサーバーに親切にして、このチャレンジのために悪用したりエクスプロイトを試みたりしないでください。

30
熱波を検出する
バックグラウンド オランダ王立気象研究所は、熱波の定義のシリーズとして*を少なくとも 5 個の連続 ≥25℃の天気(「夏の天気」)は、そのようなことの日の少なくとも当時の3がある≥30°C(「熱帯天気」 )。 熱帯の天気は連続して測定する必要はありません。たとえば30, 25, 30, 26, 27, 28, 32, 30、4日間の熱帯の天気で、8日間の熱波です。 *(まあ、オランダの基準による。) チャレンジ 連続した日からの摂氏温度測定値を表す正の整数の空でないリストが与えられた場合、そのリストに熱波が含まれるかどうかを決定します(上記の定義に従って)。 バイト単位の最短回答が優先されます。 テストケース 偽り: [30] [29, 29, 29, 47, 30] [31, 29, 29, 28, 24, 23, 29, 29, 26, 27, 33, 20, 26, 26, 20, 30] [23, 31, 29, 26, 30, 24, 29, 29, …

30
ゴールドコレクターKoTH
注:コミュニティのお気に入りのアンケートは間もなくリリースされます このKoTHの目的は、最後に生きたボットになることです。コインはランダムな領域に配置され、ボットは最初にコインを取得する必要があります。ボットが別のボットにぶつかると、より多くのコインを持つボットが勝ち、他のボットは死にます。詳細は以下をご覧ください。 コインの種類 金と銀の2種類のコインがあります。ゴールドはボットの強さに5個のコインを追加し、シルバーは2を追加します。コインが収集されると、別のコインがボード上の別の場所に配置されます。常に、アリーナには金貨1枚と銀貨4枚があります。 ボットの衝突 2つのボットが同じスペースを占有しようとする場合、より多くのコインを持っているボットは残り、より少ないコインを持っているボットは...ありません。勝利したボットは、85%の敵コインを獲得します(端数切り上げ)。それらが結ばれている場合、両方とも死にます。3つ以上が同じスペースを占有しようとすると、最も強力なものが勝ち、他のすべてのボットのコインの85%を獲得します。最も強力なボットがネクタイの場合、すべてのボットが死んでスペースに入ろうとしました。 アリーナ アリーナの辺の長さはで計算され4 + botCountます。ゲームの開始時にボットを配置する場合、ランダムな場所が選択されます。システムは、ボットが同じスペースで、または互いに隣接して開始しないようにします。コインはランダムに生成され、各ボットの中心にある3 x 3の正方形は除外されます。アリーナの外でボットが見つかった場合、すぐに死にます。アリーナは、左上隅の(0,0)または北西から始まり、ボットの位置は常に整数です。 ボット ボットは、配列、整数、文字列、関数を含むオブジェクト指向言語の関数でなければなりません。物事を簡単にするために、すべての提出物がJavascriptに変換されることに注意してください。移動の間に情報を保存するには、とを使用botNotes.storeData(key, value)しbotNotes.getData(key, value)ます。パラメータおよびを介して提供される方法以外の方法で、データを保存またはアクセスすることはできませんbotNotes。あなたは、呼び出されたときに、文字列を返す関数を作成する必要がありnorth、east、south、west、またはをnone。関数には3つの引数があります。 4つの整数を持つオブジェクト(locationX、locationY、coins、arenaLength)、あなたの現在の場所、あなたのコイン、およびアリーナの長さ 他のボットのX座標とY座標、およびそれらのコイン数を含む多次元配列、たとえば、[[0,5,4],[4,7,1],[7,4,12]] コインの場所がリストされた配列(金が常に最初) これはキングオブザヒルチャレンジです。標準の抜け穴は禁止されています。関数は数千回実行され、そのたびに1つの「移動」が許可されます。ゲームが20,000手を超える場合、コインが最も多いボットが勝つことに注意してください。これは、ランダム性を除去するために8,000回行われます。 チャットルーム: https : //chat.stackexchange.com/rooms/81347/gold-collectors-koth 賞品: 1位: 100ポイントの賞金 コミュニティお気に入り: 15ポイントの回答 受賞者: 1位: TBTPTGCBCBA 2位:ビッグキングリトルヒル 3位:潜在的に勝利する 4位:丁寧な近視の酔ったボット 5位:安全コイン

30
紐をはずす
すでにスペースから文字列を削除する方法はすでにあります。 しかし、適切な紳士/婦人として、むしろそれを脱がなければなりません。 文字列を脱ぐことは、それを取り除くことと同じですが、より繊細です。先行スペースと後続スペースをすべて一度に削除する代わりに、それらを1つずつ削除します。また、ステップを燃やさないように、先頭と末尾を交互に切り替えます。 " codegolf "(先頭と末尾の5つのスペース)で始まる例: codegolf codegolf codegolf codegolf codegolf codegolf codegolf codegolf codegolf codegolf codegolf 最初に文字列を変更せずに出力します。次に、すべてのステップを出力します。先頭のスペースを削除することから始めます(該当する場合-ルール2を参照)。 入力の先頭と末尾のスペースの数が異なる場合があります。片方のスペースが足りなくなった場合は、ひもがむき出しになるまでもう片方を脱いでください。 入力には、先頭または末尾のスペースがない場合があります。その場合は、そのまま出力します。 PPCGのデフォルトのI / Oメソッドを使用します。PPCGデフォルトの抜け穴は禁止されています。 空の入力、またはスペースのみを含む入力での未定義の動作は問題ありません。 文字列にはASCII印刷可能スペース(0x20to 0x7E)の文字のみが含まれると想定できます。 例- .読みやすくするためにスペースをドットに置き換えます: 4 leading spaces, 5 trailing: "....Yes, Sir!....." ....Yes, Sir!..... ...Yes, Sir!..... ...Yes, Sir!.... ..Yes, Sir!.... ..Yes, Sir!... .Yes, Sir!... .Yes, Sir!.. Yes, …
48 code-golf  string 

1
Ruby on Rails(またはTrackety Track)
あなたは鉄道エンジニアのルビーです。あなたの仕事は、すべての駅(M)を訪れるように、任意の谷にトラックを置くことです。敷設されるトラックの量は重要ではありませんが、谷の入口/出口ポイント(>)で開始および終了する1つの連続したパスに配置する必要があります。他にもいくつかの制約があります:山(^)は通過できないため、それらを迂回しなければなりません。rivers)は~bridge(X)を使用して渡らなければなりません。#ません。また)も通過できません。 トラックのルール トラックが適切に配置されていない場合、脱線が発生し、誰もそれを望みません。そこで、トラックの配置に関するルールを次に示します。 トラックには次の4種類があります- | / \。 以下に、それぞれを他の方法と組み合わせる方法を示します。 許可される組み合わせ-(各例の中央): ##### ##### ##### ##### ##### ##### ##### # # # # #\ # # # # /# #\ /# # # #---# # --# # --# #-- # #-- # # - # # - # # # #/ # # …

15
このTic-Tac-Toeボードは有効ですか?
チャレンジ 任意の形式の三目並べボードを使用して、それが有効かどうかを判断します。ボードが三目並べゲームの結果である場合、それは有効です。たとえば、このボードは有効です。XOX OXO XOXそれどころか、このボードは無効です。 XXX XXO OOO 入力 フル(9/9)チックタックトーボード(ゲームではなく結果)。 ルール 入力形式は、可能な512個の入力ボードすべてを表示できる必要があります。不明瞭/不明瞭な場合は、作成するための指示とともに指定する必要があります。ただし、ボードのマークは個別に記載する必要があります。 有効性と無効性の2つの出力が必要です。 ボードに空のスポットがないと仮定できます。 テストケース 有効: XOX OXO XOX XOX XOX OXO XOO OOX OXX OXO XOX OXO 無効: XXX XXX XXX OOO OOO OOO XXX OOO XXX OOO OOX XXX XXO OXO OOX 少しの援助? ボードは、次の2つの条件が満たされている場合にのみ、このチャレンジに対して有効と見なされます。 5 Xと4 O、または4 Xと5 Oがあります。たとえば、 …

16
ポリグロット作成のヒント
ポリグロットは、 2つの以上の異なるプログラミング言語で実行できるプログラムです。 ポリグロットを作成したり、特定のタスクのポリグロットを簡単に記述できる言語を選択したりするための一般的なヒントは何ですか? ほとんどの状況に適用できるヒントを投稿してください。つまり、2つの特定の言語の多言語でのみ機能するべきではありません。(特定のヒントが多すぎる場合は、単にポリグロットの質問への回答を投稿できます。)しかし、多くの言語での作業や既存のポリグロットへの追加を容易にする言語の機能を導入できます。 回答ごとに1つのヒントを投稿してください。また、言語固有のヒントが別の言語にも当てはまる場合は、自由に編集を提案してください。
48 tips  polyglot 

29
平方と平方根を計算します!
ある言語では入力の平方を出力し、別の言語では入力の平方根を出力するポリグロットを作成する必要があります。バイト単位の最短回答が勝ちです! 小数点以下3桁以上の精度が必要です。入力は常に正の浮動小数点数になります。

8
コインシステムが正規かどうかを判別
レジ係のアルゴリズムは、ほとんどの通貨システムのために非常によく動作しますコインの最小数の変更を行うためのアルゴリズムです。しかし、ほとんどの貪欲なアルゴリズムのように、欠陥がないわけではありません。通貨システムが適切に設定されている場合(または間違っている場合)、キャッシャーのアルゴリズムが最適な変更を見つけることができない特定の値があります。 次の例をご覧ください。 4¢、3¢、1¢のコインがあります。6¢を作りたい。 キャッシャーのアルゴリズムは、最初に最大数のコイン(開始するために4¢1つ)を選択し、減算して繰り返します。これにより、1枚の4¢コインと2枚の1¢コイン、合計3枚のコインが得られます。 残念ながら、アルゴリズムには2枚のコイン(2つの3¢コイン)で6¢を作成する方法があります。 変更のシステムは、キャッシャーのアルゴリズムが最適な数のコインを見つけるすべての整数値に対して標準的であると見なされます。 仕事 あなたの仕事は、システムをコインの値を表す整数の順序付けられていないコンテナまたはソートされた順序付けられたコンテナとして受け取り、システム入力が正規で偽の場合は真偽値を出力することです。 プログラムは、任意の値を作成できるすべてのシステムで動作するはずです。(つまり、すべてのシステムに1¢のコインがあります) これはコードゴルフの最小バイト数です。 テストケース このリストは決して網羅的なものではなく、プログラムはすべての有効な入力に対して機能するはずです 1, 3, 4 -> 0 1, 5, 10, 25 -> 1 1, 6, 10, 25 -> 0 1, 2, 3 -> 1 1, 8, 17, 30 -> 0 1, 3, 8, 12 -> 0 1, 2, 8, 13 …

30
この文字列をdepalindromize!
この課題に従って生成されたパリンドロームを考えると、パリンドロームを除去します。 テストケース abcdedcba -> abcde johncenanecnhoj -> johncena ppapapp -> ppap codegolflogedoc -> codegolf これは脱パリンドロマイズに関するものなので、コードを回文にすることはできません。 これはcode-golfであるため、バイト数が最も少ないコードが優先されることに注意してください。

30
リードまたはフォローしますか?
この課題では、入力として文字列を受け取り、2つの可能な値のいずれかを出力するプログラムまたは関数を作成します。これらの値の1つを真実で1つを偽物と呼びます。彼らは実際に真実または偽物である必要はありません。回答が有効であるためには、4つの追加基準を満たす必要があります プログラムを自分自身に渡すと、プログラムは真実の値を出力します。 プログラムを古い回答への入力として渡すと、(渡すプログラムの)真実の出力が出力されます。 入力として古い回答を回答に渡すと、(プログラムの)偽の出力が出力されるはずです。 チャレンジのすべての回答(新しい回答を含む)で、真の出力を評価する文字列が無数にある必要があります。 これにより、チェーン内の他のプログラムがその前後に来るかどうかを判断できる一連の回答が徐々に構築されます。 この課題の目標は、連続する回答に適用されるソース制限のリストを作成し、各回答を最後の回答よりも難しくすることです。 例 (Haskellで書かれた)チェーンを開始できます: f _ = True 古いプログラムは存在しないため、この回答には基準が適用されず、2つの可能な値のいずれかを出力するだけで済み、この場合は常にoutputを出力しますTrue。 これに従うことは答えかもしれません: f x=or$zipWith(==)x$tail x オンラインでお試しください! これは、文字列のどこかに文字が2回連続して存在することを表明します。最初の回答にはこのプロパティがありませんが、2番目の回答にはあります(==)。したがって、これは有効な次の回答です。 特別なルール 任意の言語(自由に実装できる言語)を何度でも使用できます。 あなたが最後に回答した場合は、少なくとも7日間待ってから新しい回答を投稿する必要があります。 プログラムが独自のソースを読み取れない場合があります。 4番目のルールは暗号化機能が含まれているかどうかを確認するのが非常に難しいため、そのような機能は許可されていません。 スコアリング基準 回答を追加するたびに、チェーン内のその場所と同じ数のポイントを獲得できます。たとえば、5番目の答えは作家の5ポイントを獲得します。目標は、できるだけ多くのポイントを獲得することです。最後の回答では、回答者が-∞ポイントを獲得します。チャレンジに「勝つ」のではなく、自分のスコアを最大化しようとする場合、これはおそらくもっと楽しいでしょう。私は答えを受け入れません。 これは回答連鎖であるため、最も古い順に並べ替えることができます

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