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

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

30
ゼロから離れる
仕事 非負整数与えられn、出力1場合nであり0、出力の値nさもなければを。 入力 負でない整数。 文字列を入力として受け入れたい場合、文字列は次の正規表現に一致します。/^(0|[1-9][0-9]*)$/つまり、先頭にゼロが含まれている場合を除き0ます。 入力として実数の整数を受け入れる場合、整数が言語の処理能力の範囲内にあると想定できます。 出力 上記で指定された正の整数。先行ゼロは許可されません。出力は正規表現と一致する必要があり/^[1-9][0-9]*$/ます。 テストケース input output 0 1 1 1 2 2 3 3 4 4 5 5 6 6 7 7 得点 これはcode-golfであるため、バイト単位の最短回答が優先されます。 標準の抜け穴が適用されます。

30
haiku-wディテクターを書く
A 俳句は 5/7/5で、三行詩である音節それぞれカウント。 俳句-wは 5/7/5で、三行詩であるワードをそれぞれカウント。 チャレンジ 返されるプログラム書くの真入力は俳句-W、及びある場合にはfalseではない場合が。 有効なhaiku-w入力は、改行で区切られた3行で構成する必要があります。 行1は5つの単語で構成され、各単語はスペースで区切られている必要があります。 行2は7つの単語で構成され、各単語はスペースで区切られている必要があります。 行3は5つの単語で構成され、各単語はスペースで区切られている必要があります。 例 The man in the suit is the same man from the store. He is a cool guy. 結果:真 Whitecaps on the bay: A broken signboard banging In the April wind. 結果:偽 ルール これはcode-golfであるため、バイト単位の最短回答が優先されます。 標準的なコードとゴルフの抜け穴が適用されます。不正行為は禁止されています。 他のブール戻り値、等1とは0、許容可能です。 入力としての文字列の長さ3のリストも使用できます。 有効なhaiku-w入力には、先頭または末尾のスペース、または単語を区切る複数のスペースを含めることはできません。

30
この数値は-2の整数乗ですか?
数値が2のべき乗かどうかを判断する賢い方法があります。これはもはや興味深い問題ではないので、与えられた整数が-2の整数のべき乗かどうかを判断しましょう。例えば: -2 => yes: (-2)¹ -1 => no 0 => no 1 => yes: (-2)⁰ 2 => no 3 => no 4 => yes: (-2)² ルール プログラムまたは関数を作成し、入力を受け取って出力を提供する標準的な方法を使用できます。 入力は単一の整数であり、整数が-2の整数乗である場合は出力が真実の値であり、それ以外の場合は偽の値である必要があります。他の出力(警告メッセージなど)は許可されません。 通常の整数オーバーフロールールが適用されます。ソリューションは、すべての整数がデフォルトで制限されていない仮想バージョン(または実際のバージョン)の任意の大きな整数で動作できる必要がありますが、実装によりプログラムが実際に失敗する場合それほど大きな整数をサポートしていなくても、ソリューションは無効になりません。 任意のプログラミング言語を使用できますが、これらの抜け穴はデフォルトでは禁止されています。 勝利条件 これは、コードとゴルフのコンテストです。(選択したエンコーディングで)バイト数が最も少ない答えが勝者です。

15
ソースコードに素数が含まれていない数値が2017年に壊れやすいかどうかを判断する
私がこの挑戦をしてきたすべての年のうち、2017年は素数であった最初の年です。したがって、問題は素数とその性質についてです。 あなたの仕事は、入力として任意の大きな正の整数を受け取り、2,017-friableであるかどうか、つまりその数の最大素因数が2,017以下であるかどうかを出力または返すプログラムまたは関数を生成することです。 いくつかの入力例とその出力: 1 (has no prime factors) true 2 (= 2) true 80 (= 2 x 2 x 2 x 2 x 5) true 2017 (= 2017) true 2019 (= 3 x 673) true 2027 (= 2027) false 11111 (= 41 x 271) true 45183 (= 3 x 15061) …

30
この番号は(3 ^ x)-1形式で記述できますか?
チャレンジ: 正の整数を受け入れ、(3 ^ x)-1の形式で記述できるかどうかをチェックするプログラムを作成します。ここで、Xは別の正の整数です。 可能であれば、Xを出力します できない場合は、-1または偽のステートメントを出力します。 入力/出力の例 入力: 2 (3 ^ 1)-1と書くことができるので、1であるxを出力します 出力: 1 入力: 26 26は(3 ^ 3)-1と書くことができるので、x(3)を出力します 出力: 3 入力: 1024 1024は(3 ^ x)-1の形式では記述できないため、-1を出力します 出力: -1 これはコードゴルフなので、バイト数が最小になります 関連OEIS:A024023

30
課題の配列#1:交互配列
交互配列 交互配列は、2つ(必ずしも異なる)の値が交互にされた任意の長さのリストです。つまり、すべての偶数インデックスのアイテムは等しく、すべての奇数インデックスのアイテムは等しくなります。 あなたの仕事は、正の整数のリストが与えられたときに、truthy交互になっているfalsy場合とそうでない場合に出力/返すプログラムまたは関数を書くことです。 これはcode-golfなので、最短のコード(バイト単位)が勝ちです! エッジケース: [] -> True [1] -> True [1,1] -> True [1,2,1] -> True その他のテストケース: [1,2,1,2] -> True [3,4,3] -> True [10,5,10,5,10] -> True [10,11] -> True [9,9,9,9,9] -> True [5,4,3,5,4,3] -> False [3,2,1,2,1,2] -> False [1,2,1,2,1,1,2] -> False [2,2,3,3] -> False [2,3,3,2] -> False 例 Python …

8
渦巻く言葉を見つけよう!
方法や理由を聞かないでください。プロジェクトのコーディング中に、いくつかの単語の文字がアルファベットを参照する特定のパターンを持っていることに気づき、単語の各文字をアルファベットの鉛筆でつなぎ、スパイラル、それから私は最初のスパイラルが時計回りであり、他が反時計回りであり、他の特性に気づいたので...私はそれらを渦巻く言葉と命名しました! A 旋回ワードを指定できます。 時計回りまたは反時計回り 求心性または遠心性 ここに渦巻く言葉のいくつかの例があります: タスク1: 標準入力から単語を取得し、スワーリングワードである場合に出力する完全なプログラムまたは関数を、読み取り可能な形式、拡張テキスト、3文字、フラグなどで記述します。 さまざまな単語のテストケースと出力例(ただし、結果の表示方法は決定できます): EARTH, GROUP > NO // NOT A SWIRLING WORD OPERA, STAY, IRIS > SW,CF,CW // SWIRLING WORD, CENTRIFUGAL, CLOCKWISE MINER, TAX, PLUG, META > SW,CF,CC // SWIRLING WORD, CENTRIFUGAL, COUNTERCLOCKWISE AXIOM, AXIS, COOK > SW,CP,CW // SWIRLING WORD, CENTRIPETAL, CLOCKWISE WATCH, …
41 code-golf  string 

10
スクエア、ダイヤモンド、スクエア、ダイヤモンド
仕事 小文字のASCII文字a-の空でない文字列が与えられた場合、z最初の文字を取り、そして: 2番目のキャラクターのコピーの正方形でそれを囲み、 それを3番目のキャラクターのコピーのひし形で囲み、 4番目の文字のコピーの正方形でそれを囲みます… …文字列の終わりまで正方形とダイヤモンドの境界を交互に切り替えます。ボーダー間の空のスペースは、ASCIIスペース()で表す必要があります。 正方形の境界線を追加するには、現在の「作業配列」全体を正確に囲むように正方形を描きます。 sssssssssss t s t s t t s t t s t t s t t s t aaa t s t aaa t s t aca t => st aca ts t aaa t s t aaa t s t t s …

30
グッドネスギザゴルフ!
「ギザ番号」は、口語ではティミー番号とも呼ばれ、数字がピラミッドを表す任意の番号です(A134810)。たとえば、「12321」は次のように視覚化できるため、ギザ番号です。 3 2 2 1 1 ただし、ピラミッドの上部に2桁があるため、「123321」のようなものはギザ番号ではありません 33 2 2 1 1 つまり、次のすべての条件が満たされている場合、数字はギザの数字です。 桁数が奇数で、中央の桁が最大です それは回文的(同じ読み取り前方または後方)であり、 数字の前半は厳密に1ずつ増加しています。(それは回文的でなければならないので、これは数字の後半が厳密に1つ減少しなければならないことを意味します) 入力として正の整数を取る完全なプログラムまたは関数を作成し、それがギザ数であるかどうかを判断する必要があります。入力は文字列または数値として取得できます。それは場合であるギザ番号、出力truthy値。それ以外の場合、偽の値。 合計45のギザ数があるので、これらの入力のいずれかが真実の値になるはずです。 1 2 3 4 5 6 7 8 9 121 232 343 454 565 676 787 898 12321 23432 34543 45654 56765 67876 78987 1234321 2345432 3456543 4567654 5678765 6789876 123454321 234565432 …


9
1次元の迷宮の秘密を解き明かす
バックグラウンド あなたは目覚めて、一次元の迷宮で迷子になっていることに気づきます!神秘的な魔神(または何か)が現れ、出口があなたの前にあることを説明しますが、あなたと出口の間には一連の課題があります。歩き回ると、いわゆるチャレンジはすべて施錠されたドアに過ぎないことに気付くでしょう。最初に、T字型の鍵穴のあるドアを見て、自分でそのような鍵を持っていない場合、ステップをたどって、T形のある鍵を探します。 イライラして、あなたは地面に鍵のアルファベットのスープを見つけます、どれもあなたが出くわしたドアにマッチしません。天才(または馬鹿げた)のストロークで、小文字のt形をしたキーが十分に強くジャムするとスロットに収まる可能性があると判断します。小文字のtキーを手に持ってドアに近づくと、T穴が緑色に光り、ドアが目の前で消えます。 あと1つ、もっとたくさん... チャレンジ この課題の目標は、迷路から抜け出すまでに必要なステップ数をマークすることです。 このチャレンジの入力は迷路です:文字のみを含む1つの文字列[A-Za-z^$ ]です。用語集: ^-開始スペース。入力には正確に1つが含まれます^。 $-出口(自由!)。入力には正確に1つが含まれます$。 [A-Z]-大文字はドアを意味します。必要なキーをすでに収集している場合にのみ、このドアを通過できます。 [a-z]-小文字はキーを示します。これらのキーを収集するには、キーを含むスペースに歩いて行きます。 入力に含まれる大文字は最大で1つです。これは、ドアの合計数が0〜26の間であることを意味します。 すべてのロックされたドアに[A-Z]は、対応する小文字のキーが1つだけあります[a-z]。入力には任意の数のスペース()を含めることができます。 すべてのドアは、スタートの右側と出口の左側にあります。したがって、余分なドアはありません。すべての入力は解決可能です。 このチャレンジの出力は、ラビリンスを抜けるまでにかかったステップの数です。 アルゴリズム この惨めな場所を出るための系統的なアプローチは次のとおりです。 最初から始め(^)、前方(右)に移動して、出会ったキーを収集します。 ドアに出くわしたとき、正しいキーがあれば、ドアに向かって進みます。正しいキーを持っていない場合は、後方(左)に歩いて、開いていない最新のドアのキーが見つかるまで、出会ったキーを収集します。 現在の面倒なドアの鍵を集めたら、右に戻り、先に進みます。 出口($)に進むまで、このプロセスを繰り返します。 経験豊富なゴルファーは、このアルゴリズムを実行した場合と同じ結果を出力する限り、コードがこの特定のアルゴリズムを実装する必要がないことを理解します。 カウント 1つの正方形から別の正方形にステップするたびに、それが1つのステップとしてカウントされます。180º回転しても追加のステップは発生しません。必要なキーがないと、ドアに足を踏み入れることはできません。あなたはそれを拾うためにキーに足を踏み入れなければならず、勝つために出口に足を踏み入れなければなりません。最初の移動の後、開始スペース(^)は他の通常のスペースと同じように動作します。 例 これらの例では、人間が読みやすいようにスペースをアンダースコアとして残しています。 入力は_a_^_A__$__です。出力は11です。あなたは1一歩前進し、Aドアの鍵がないことに気付き、それから顔について。を含むスペースを占めるまで後方に歩きますa(3後方に進み、現在は4合計)。次に、出口を含むスペースを占有するまで前方に歩きます(前方に進み7、11合計)。 入力はb__j^__a_AJB_$です。出力は41、1つはjキーを取得し、次のキーはキーを取得するために、ラビリンスの裏側に2回旅行しbます。 入力は__m__t_^__x_T_MX_$____です。出力は44です。x鍵を手に入れるために余分な旅行をすることはありませんT。最初からドアまでの途中で鍵を手にしたからです。 入力はg_t_^G_T$です。出力は12です。あなたはGキーなしで、すぐに顔を合わせてスペースに移動することはできません。あなたは幸運にも、t鍵に向かう途中で鍵を手に取り、g自由に向かう途中で両方の扉を開くことができます。 入力は_^_____$です。出力は6です。それは簡単でした。 I / Oガイドラインと勝利基準 標準のI / Oルールが適用されます。これはコードゴルフの挑戦です。
41 code-golf  string 

30
米とチェスの問題
インドの伝説によると、チェスゲームの発明者とされる人物が、彼のゲームでインドの皇帝に感銘を与えたので、尋ねられたものは何でも報われます。 男は彼が米で支払われたいと言った。彼は、チェス盤の最初の正方形に1粒、2枚目に2枚、3枚目に4枚、4枚目に8枚、というように64枚目まで米粒が欲しいと思っていました。 皇帝はその男がそのような小さな報酬を求めたことに驚いたが、彼の数学者が数え始めたとき、彼は彼の州の一つを失ってしまった。 仕事 仮定のチェス盤の辺の長さ(デフォルトのチェス盤では8)と平方間の乗数(凡例では2)を考慮して、皇帝が男性に支払う必要がある米の粒数を計算します。 ノート 辺の長さは常に正の整数になります。乗数は、代わりに任意の種類の有理数にすることができます。 選択した言語で非常に大きな数値を表示できない場合、プログラムが小さな入力を正しく処理できる限り問題ありません。 また、選択する言語が(指数表記で)大きな値を丸める場合、それらの値がほぼ正しい場合でも問題ありません。 テストケース Input (side length, multiplier) => Output 8, 2 => 18446744073709551615 3, 6 => 2015539 7, 1.5 => 850161998.2854 5, -3 => 211822152361 256, 1 => 65536 2, 2 => 15 2, -2 => -5 明示的な式 result = (multiplier ^ (side …
41 code-golf  math 

9
メッセージに50バイトのスターを付けるかどうかを予測する
以下に説明およびリンクされているリストから取得したサイトチャットルームからのメッセージで構成される文字列の入力が与えられた場合、そのメッセージがスター付きかどうかを50バイト以下で予測しようとする真偽値または偽の値を出力します。 真実または偽の値を使用できますが、それらは同一でなければなりません(つまり、1つの真実と1つの偽の2つの可能な出力のみが存在する必要があります)。入力は、改行が削除された生のHTMLとして提供され、ASCII以外のUnicode文字が含まれる場合があります。UTF-8以外での入力が必要な場合は、回答でそう言ってください。 このチャレンジに対する受賞作品は、以下にリンクされているリストから、チャットメッセージの最も高い割合を正しく予測するものになります。指定された2つの提出の成功率が同じ場合、短い提出が優先されます。 メッセージのセット全体でコードを実行し、正しい割合を計算するための指示を提供してください。理想的には、これはボイラープレートコード(50バイトにはカウントされない)であり、ポジティブテストケースをループし、コードが正しくなった数を出力し、ネガティブテストケースに対して同じことを行う必要があります。(全体のスコアはを介して手動で計算でき(correctPositive + correctNegative) / totalMessagesます。) コードを合理的にテストできるようにするには、合理的な現代のハードウェアでチャットメッセージのリスト全体に対して5分以内に完了する必要があります。 チャットメッセージの完全なリストはここにあり、真実のテストケースとしての最新のスター付きメッセージ1000件と、偽のテストケースとしての最新のスターなしメッセージ1000件で構成されています。要点には2つのファイルがあることに注意してください。スターを付けていないメッセージについては、下にスクロールしてください。

22
N番目ごとのNを削除
タスク この課題では、入力は正の整数の空でないリストであり、言語のネイティブ形式で与えられます。出力は、一部の要素が削除された同じ形式の同じリストです。のすべての出現1、2 2番目の出現3、3番目の出現などをすべて削除します。一般に、すべての正の整数Nについて、リストからN番目の出現をすべて削除します。NN 例 入力リストを検討する [3,2,6,1,1,6,2,3,2,6,6,6,6,1,6,6,3,3,7,2] 最初に、次のすべての出現を削除します1。 [3,2,6, 6,2,3,2,6,6,6,6, 6,6,3,3,7,2] その後、次のすべての2番目の発生2: [3,2,6, 6, 3,2,6,6,6,6, 6,6,3,3,7 ] その後、3回ごとに3: [3,2,6, 6, 3,2,6,6,6,6, 6,6, 3,7 ] 番号4と5は入力に含まれないため、スキップできます。次に、の6番目ごとの出現を削除します6。 [3,2,6, 6, 3,2,6,6,6, 6,6, 3,7 ] の発生は1つだけな7ので、同様にスキップできます。したがって、正しい出力は [3,2,6,6,3,2,6,6,6,6,6,3,7] ルールとスコアリング 完全なプログラムまたは関数のいずれかを作成できます。最小のバイトカウントが優先され、標準の抜け穴は許可されません。 テストケース [1] -> [] [2] -> [2] [1,1,1] -> [] [2,2,2] -> [2,2] [1,1,2,2,2,3,3,3,3] -> [2,2,3,3,3] …

30
多肢選択式テストの不正行為
前書き 勉強しながら、複数選択テストをごまかすためのいくつかの方法を考え出そうとしました。基本的には、多肢選択式回答の圧縮バージョンです。メソッドは次のようになります。 テストへの回答: BCAABABA これらは3つの異なる配列に変換でき、現在の文字が答えであればtrueまたはfalseを示します。 B C A A B A B A A: [0, 0, 1, 1, 0, 1, 0, 1] B: [1, 0, 0, 0, 1, 0, 1, 0] C: [0, 1, 0, 0, 0, 0, 0, 0] これらの数値をバイナリとして解釈すると、これが大幅に圧縮されます。しかし、これは実際にはもう少し圧縮できます。AとBの位置がわかっている場合、Cの位置は必要ありません。これは、ビット単位のNOT演算子で実行できます。 A: [0, 0, 1, 1, 0, 1, 0, 1] …

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