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

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

16
波状の言葉を見つけよう!
(注:これは、以前の課題である「無限の言葉を見つけよう!」の簡単な派生です!。これは、他の以前のチャレンジFind the Swirling Words!のスピンオフです :)) の定義 波状の言葉の: アルファベット(A〜Z)の波状の単語のすべての文字を曲線でつなぐと、次の図のように、右または左に連続して方向を変えない波のパスを取得します。 A 波状ワードを指定できます。 上げるそれぞれの連続した文字は、以前の1の(アルファベットで)右にある場合。 連続する各文字が前の文字の左(アルファベット上)にある場合は減少します。 すべての偶数接続がダウンしている必要があり、すべての奇数接続がアップしている必要があります。 大文字/小文字を無視するか、すべてを大文字に変換するか、すべて小文字に変換/変換することができます。 入力単語は、A〜Zのアルファベット範囲の文字のみで、スペース、句読点、記号は使用できません。 単語に「SPOON」などの二重文字がある場合、二重文字を1文字に折りたたむ必要があります。「SPOON」>「SPON」です(OからOに行くと距離がゼロになるため)。 Wavy Wordsには、少なくとも3つの異なる文字が含まれます(二重に折りたたまれた後でも)。 ここにいくつかの例があります: 仕事: それがある場合は、標準入力と出力の意志から単語を取る完全なプログラムや機能書く波状の言葉、それがされている場合かどうかを、正の場合は、出力上げまたは減少。出力が可能True/False/Null、2/1/0、1/Null/0、-1/0/1、NO/WR/WD、など、あなたはそれをどのように表現するかを決めます。 テストケース: WAVY WORDS: ADEPT, BEGIN, BILL, BOSS, BOOST, CHIMP, KNOW, SPONGE, SPOON, TROLL, WOLF ADEPT > YES > RAISING BEGIN > YES > RAISING BILL > YES > RAISING …
18 code-golf  string 

26
英語から外国人への翻訳者
ブリーフィング エイリアンは地球上に定住しており、奇妙なことに、彼らのアルファベットは私たちのものとまったく同じです。それらの言語も、非常に明確で簡単に計算できる違いがある点で、私たちの言語に非常に似ています。 チャレンジ 文字列を取得し、エイリアンの同等の言語を出力します。翻訳は次のように機能します。 単語内のすべての母音を対応するものと交換します。 Vowel | With --------+-------- a | obo e | unu i | ini o | api u | iki Alien-> Englishを翻訳する別の翻訳者を書くこともできますが、これはオプションです。 例 Input: Shaun Output: Shoboikin Input: Java Output: Jobovobo Input: Hello, World! Output: Hunullapi, Wapirld! 母音が大文字の場合、最初の文字を大文字にします。 Input: Alan Output: Obolobon Input: Australia Output: Oboikistroboliniobo …
18 code-golf  string 

8
職場での掃海艇
Windows XPに同梱されている古い掃海艇ゲームは誰でも知っています。これは、番号(それに隣接する地雷の数を示す)または地雷のいずれかを含む9x9のセルのマトリックスを持つ単純なグリッドです。 課題は、PRNGを自分で実装する場合、整数シード(マシン/言語の最大のintが何であれ)を与えられた10個の爆弾でランダムな9x9グリッドを生成することです。 出力例:セルには0〜8の数字または地雷の*が含まれます *101*1000 110111000 123210000 1***10000 123210011 00000002* 00000114* 000112*3* 0001*2121 バイト単位の最短コードが勝ちます。標準ルールなど。

13
サイコロ10,000ロールを評価する
前書き サイコロ10,000は、6つのサイコロと何か書くことでプレイできるサイコロゲームです。プレイヤーはサイコロを1ターンに複数回転がし、最後にスコアを獲得します。最初に10,000ポイントに達したプレーヤーがゲームに勝ちます。1つのロールのスコアを計算することは、この課題におけるあなたの仕事です。完全なルールについては こちらをご覧ください。 ゲームは広く知られているため、ルール(特にスコアリング)は地域によって異なることに注意してください。以下で説明するルールを使用します。 チャレンジ サイコロを表す1から6までの6つの数字のリストが与えられたら、それらのスコアを出力します。スコアは次の方法で計算されます。 100ポイントを数える Fivesは50ポイントを数えます トリプレットはその数に100ポイントを掛けます。たとえば、3つの2は200ポイントを与えます。例外は、1000ポイントをカウントする3つの例外です。 同じ数の6つは、上記の2つのトリプレットのようにカウントされます。したがって、6 3は600ポイントを与えます。同じことはエッジケースにも当てはまります:6つは2,000ポイントです。 1つのダイを複数回使用することはできません。ダイスがトリプレットの一部である場合、他のスコアリングにはカウントされません。トリプレットのファイブは、500ポイントに加えて50ポイントをカウントしません。 スコアを最大化するために、トリプルが常に最初にカウントされます。したがって、スリーファイブは150ポイントとしてカウントされません。4つのファイブは1つのトリプレットと1つの通常のファイブとしてカウントされ、550ポイントを獲得します。 ノート 入力には常に1〜6の6つの数字が含まれます。無効な入力は受け取りません。 番号は任意の順序にすることができます。特定の順序を想定することはできません。 ルール 入力形式は、前処理されていない限り自由です。 機能または完全なプログラムが許可されます。 入出力のデフォルト規則。 標準の抜け穴が適用されます。 これはcode-golfなので、バイト数が最も少なくなります。Tiebreakerは以前の提出です。 テストケース [1、2、3、4、5、6]-> 150 [1、1、1、2、3、5]-> 1050 [1、1、1、1、1、1]-> 2000 [2、2、2、2、2、2]-> 400 [6、6、1、5、5、6]-> 800 [2、3、4、6、2、4]-> 0 [1、5、1、5、1、5]-> 1500 [5、5、5、5、2、3]-> 550 [1、1、1、1、1、5]-> 1250 [3、3、4、4、3、4]-> 700
18 code-golf  game 

4
私はしばらくの間アルファベット狩りをしてきました
ええ、最近、「アルファベット」の課題がたくさんあります。(1 2 3 4 5)。私は良いチャレンジが大好きで、それらのチャレンジはとても楽しかったですが、今はペースを変える時だと思います。将来、このような課題を排除する必要があります。自動化の時間です! あなたは私のために、そして自動化のために(そして栄光のために!)いくつかのアルファベットを見つけるでしょう。アルファベットはトリッキーで、自分自身を隠すのが好きです。[引用が必要]次の要素を考慮する必要があります。 アルファベットは大文字でも小文字でもかまいません(両方ではありません)。だから、あなたが探しする必要があるABCDEFGHIJKLMNOPQRSTUVWXYZとabcdefghijklmnopqrstuvwxyz、ではなくAbCdeFGhIJkLmNOpQRsTuvwxyZ。つまり、完全に1つのケースで構成されているアルファベットのみを探します。 アルファベットは移動できます。常にで始まるとは限りませんAが、代わりにGまたはで始まる場合がありUます。だからあなたはのようなものを探す必要がありますOPQRSTUVWXYZABCDEFGHIJKLMN。 アルファベットは常に前方に読むとは限りません。また、後方、上方、下方に読むことができます。たとえば、ZYXWVUTSRQPONMLKJIHGFEDCBA有効なアルファベットでもあります。 アルファベットを含む文字列の例を次に示します。 JIHGFEDCBAZYXWVUTSRQPONMLK これは、逆向きのシフトされたアルファベットです。 JIHGFEDCBAZYXWVUTSRQPONMLK <--------|<--------------- これにはアルファベットも含まれます。 F G H I J K L M N O P Q R S T U V W X Y Z A B C D E それは下向きのアルファベットです: F | G | H | I | …
18 code-golf  string  grid 

21
過剰な整数
以下のために正の整数をn素因数分解して素数であると正の整数であり、我々は2つの機能を定義することができます。n = p1^e1 * p2^e2 * ... pk^ekp1,...,pke1,...,ek Ω(n) = e1+e2+...+ek素数の数(多重度でカウント)(A001222) ω(n) = k異なる素因数の数。(A001221) これらの2つの関数を使用して、超過 を定義しますe(n) = Ω(n) - ω(n)(A046660)。これは、数値がどのくらい正方形に近いかを示す尺度と見なすことができます。 チャレンジ 与えられた正の整数をn返しe(n)ます。 例 以下のためにn = 12 = 2^2 * 3、私たちは持っているΩ(12) = 2+1し、ω(12) = 2そのためe(12) = Ω(12) - ω(12) = 1。任意の平方数について、n私たちは明らかに持っていe(n) = 0ます。最初のいくつかの用語は 1 0 2 0 3 0 4 1 …

19
可変プライム「ツイン」
私は兄弟と2/3の双子です。つまり、同じ月の同じ日に生まれますが、12年後です。私が5歳のとき、彼は17歳でした。私たちが合理的に期待できる最後のペアは[71、83]で、私たちは両方とも生きており、この偶然の記念日を祝うことができます。 仕事 次のコードを作成します 入力として2つの整数を取ります:正の整数k(まあはい、私は若い)としてのカウンターと「ツイン」の差と正の整数u(実行時の考慮事項)としての上限 そして、iとi + kの両方が素数であるu以下のすべてのi数の配列またはリストとして出力を与えます。出力をソートする必要はありません。 テストケース 12, 1000 -> [5, 7, 11, 17, 19, 29, 31, 41, 47, 59, 61, 67, 71, 89, 97, 101, 127, 137, 139, 151, 167, 179, 181, 199, 211, 227, 229, 239, 251, 257, 269, 271, 281, 337, 347, 367, 389, 397, 409, …
18 code-golf  primes 

14
Permutapalindromic数
N入力として整数が与えられた場合、Nth番目のpermutapalindromic数を出力します。 permutapalindromic番号は、パリンドローム(つまり、それ自体が逆の番号)をもたらす数字の置換が少なくとも1つあるような、厳密に正の整数です。 たとえば、117は、その数字が171回文であるに置換できるため、置換順配列数です。 このような10数字01 = 1は、回文ですが、permutapalindromicの数字ではないと考えています。パリンドローム順列の先頭にゼロを付けてはなりません(そのように、0それ自体はパーミュタパリンドロームではありません)。 すでにパリンドロームである数も、順列パリンドロームです。何も置換しないことが有効であるためです。 入力と出力 N0インデックスまたは1インデックスのいずれかです。回答でどちらを使用するかを指定してください。 入力はSTDIN、を介して、関数の引数として、または選択した言語に類似したものとして取得できます。出力は、に書き込むことができSTDOUT、関数から返されるか、選択した言語に似たものであれば何でも返します。 入力と出力は10進数でなければなりません。 テストケース 次のテストケースは1から始まります。プログラムは、ここで提示されたテストケースのいずれかを最大1分で合格できる必要があります。 N Output 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 11 42 181 100 404 128 511 256 994 270 1166 得点 これはcode-golfであるため、バイト単位の最短回答が優先されます。

14
かなり滑らかな動き
算術では、n平滑数(nは任意の素数)は、nより大きい素因数を持たない正の整数として数学的に定義されます。たとえば、42はすべての素因数が7以下であるため7平滑ですが、44は素因数として11もあるため7平滑ではありません。 非常に滑らかな数値を、それ自体の平方根より大きい素因数のない数値として定義します。したがって、非常に滑らかな数値のリストは次のように定式化できます。 (編集済み!) 1は、素因数がまったくないため、非常に滑らかな数値です。(この質問の元のバージョンでは、1がリストから誤って除外されていたため、出力から除外した場合、間違ってマークされることはありません。) 4(= 2 2)と8の間では、非常に滑らかな数値は2滑らかで、2が唯一の素因数であるということです。 9(= 3 2)と24の間では、非常に滑らかな数値は3滑らかで、素因数分解で2と3を持つことができます。 25(= 5 2)と48の間では、非常に滑らかな数値は5滑らかで、素因数分解で2、3、および5を持つことができます。 など、次の素数の二乗に到達するたびに基準をアップグレードします。 非常に滑らかな数値のリストは固定されており、次のように始まります:1、4、8、9、12、16、18、24、25、... あなたの課題は、10,000(= 100 2)までのすべての非常に滑らかな数値を出力するコードを書くことです。リスト内の各番号と次の番号の間には、少なくとも1つのセパレーター(スペース、コンマ、改行などは関係ありません)が必要ですが、どの文字が使用されるかはまったく関係ありません。 いつものように、最低のバイト数が勝ちます-明らかに、リストを出力するだけではここではあまり有益ではありません。幸運を!
18 code-golf  math  primes 

4
最小限の単語検索
先週、私たちは英語の上位10,000語を使用して最短の1次元文字列を作成することに取り組みました。さあ、同じチャレンジを2Dで試してみましょう! あなたがする必要があるのは、上記のすべての単語を取得し、それらを可能な限り小さな長方形に入れて、重複を可能にすることです。たとえば、単語がの場合["ape","pen","ab","be","pa"]、可能な長方形は次のようになります。 .b.. apen 上記の長方形のスコアは5です。 ルール: 単語内の複数の文字の重複は許可されています 言葉は8つの方向のいずれかに行くことができます 言葉は折り返せない 空の場所には任意の文字を使用できます これらの英語の上位10,000語を含む単語検索を作成する必要があります(Googleによる)。 スコアは、単語検索の文字数に等しくなります(未使用の文字を除く)。同点の場合、または提出が最適であることが証明された場合、最初に投稿された提出が優先されます。

10
RGBグラデーション生成
チャレンジ RGB値(範囲は両端000000をFFFFFF含む)を表す2つの大文字の16進文字列(6文字、XXXXXXおよびYYYYYYの両方)、およびゼロ以外の正の整数Nを指定すると、XXXXXXからYYYYYYに生成されたN + 2色の線形遷移を表示しますそれは色のグラデーションになります。 例 入力 FF3762 F08800 9 出力 この例では、2つの色の間に9つの中間ステップを要求していることに注意してください。したがって、初期色から最終色まで11行が表示されます。 FF3762 FD3F58 FC474E FA4F44 F9573A F75F31 F66727 F46F1D F37713 F17F09 F08800 注意事項 16進数に戻す前に中間色の整数値を導出する単純な線形プロセスを使用しましたが、方法は異なる場合があります。それに応じて番号を切り上げ/切り捨てるさまざまな方法を検討してください。 テスト中 これを面白くするために、コードをテストするための2つのランダムな色を提供するボタンを含む、コードのテストを可能にするスニペットを提供しました。結果の表示はオプションですが、推奨されています! c1=()=>('00000'+(Math.random()*(1<<24)|0).toString(16)).slice(-6); $("#col").click(function(){ alert("Your two colors are: "+c1()+" and "+c1()+"."); }); $("#colors").blur(function(){ $("#test").empty(); var colArr = $("#colors").val().split("\n"); for(c in colArr){ $("#test").append('<div class="tester" style="background-color:#'+colArr[c]+';">'+colArr[c]+'</div>') } }); …
18 code-golf  color 

9
ラミーシーケンスを生成する
あなたの仕事は、私が作成したシーケンスであるラミーシーケンスの入力nおよび出力要素を取得することですn(OEISを調べても役に立ちません)。 定義 ラミーシーケンスの各要素は、真偽値のセットです。例:[true, false]。 ラミーシーケンスのメンバーを作成する手順は非常に簡単です。 最初のインデックスから始めます[](これは要素0です)。 左端の偽物を真実に設定します。変更するfalseysがない場合は、リストの長さを1増やして、新しいリストのすべてのメンバーをfalseyに設定します。 elementに達するまで手順2を繰り返しますn。 例 関数を次のように定義してみましょうrummy(int n)({}答えは答えを得るための手順です): >>> rummy(5) {[]} {[false]} {[true]} {[false, false]} {[true, false]} [true, true] ルール 標準の抜け穴が適用されます。 ご使用の言語の数値の上限を超える入力0で機能する必要があります。 出力が真実/偽のセットであることは明らかである限り、適切と思われる方法で出力できます。 トリビア これを「ラミーシーケンス」と呼びます。これは、インデックス2から、プログレッシブラミーの各ラウンドで設定する必要があるセットを定義するためです。 テストケース >>> rummy(0) [] >>> rummy(1) [false] >>> rummy(6) [false, false, false] >>> rummy(20) [true, true, true, true, true] >>> rummy(1000) [true, …

6
mod-foldを認識する
仕事 mod-foldを形式f(x)= x%a 1 %a 2 %…%a kの関数として定義します。ここで、aiは正の整数で、k≥0です。(ここで、%は左結合モジュロ演算子です。) n個の整数y 0、…、y n-1のリストを指定して、各y i = f(i)になるようにmod-fold fが存在するかどうかを判断します。 関数/プログラムの任意の2つの出力 YおよびNを選択して修正できます。そのようなfが存在する場合、常に正確にYを返す/印刷する必要があります。そうでない場合は、常に正確にNを返す/印刷する必要があります。(これらはtrue/ false、または1/ 0、またはfalse/ trueなどです。)これらをあなたの答えに挙げてください。 バイト単位の最短提出が勝ちです。 例 f(x)= x%7%3を定義します。その値は始まります: | x | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | ... | f(x) …

11
逆日付を合法化
入力: 日付(dd、MMおよびを含むyyyy)。日付オブジェクト、または3つの個別の整数も入力として有効です。 出力: 各部分(dd、MMおよびyyyy)は個別に元に戻され、次に最も近い有効な日付に丸められます。 例(形式dd-MM-yyyy):に 21-10-2016なります12-01-6102 チャレンジルール: のみdd、MM、yyyy有効ですが、あなたが使用順序と別のシンボルは、あなた自身の選択です。 したがって、これらは有効な形式の例ですdd-MM-yyyy。MM/dd/yyyy; yyyy MM dd; ddMMyyyyなど。 また、これらは無効な形式の例ですdd MMM yyyy。dd-MM-'yy; 等 日付を表す文字列の代わりに、言語がサポートしている場合はDateオブジェクトを入力するか、3つの個別の整数パラメーターを入力することもできます。 使用した日付形式を明記してください!(また、入力と出力は同じ形式でなければなりません。)以下のすべてのテストケースとチャレンジルールを処理できる限り、Dateオブジェクトの出力も許可されます。 このチャレンジでは、ユリウス暦からグレゴリオ暦への移行は無視されます。の1582有効な逆年です2851。 有効なすべての年、月、日に関するチャレンジ情報/ヒントを参照してください。 2月を他の月と逆にすることはできないため、うるう年を心配する必要はありません。 すべて逆の年、月、日: 年は、問題なくいつでも元に戻すことができ、0001(元に戻す1000)から9999(残り9999)に達します。(つまり0000、有効な入力ではなく、テストケースもありません。) 取り消されるのは、1月のみです:1月(10月から取り消され10ます/ )10月(1月から反転/ 01); 11月(11月のまま/ 11); および12月(1か月おきに反転/ 02- 09、12)。 取り消されるのは、01(から取り消される10)、02(から取り消される20)、03(から取り消される30)、10(から取り消される01)、11(残っている11)、12(から取り消される21)、13(から取り消される31)のみです、20(から反転02)、21(から反転12)、22(のまま22)、30(11月から反転03または31と同じ!)、31(から反転04- 09/ 13-19/ 23- 29)。 一般的なルール: これはcode-golfであるため、バイト単位の最短回答が優先されます。 コードゴルフ言語では、非コードゴルフ言語で回答を投稿しないようにしてください。「任意の」プログラミング言語の可能な限り短い答えを考えてみてください。 回答には標準的な規則が適用されるため、STDIN / STDOUT、適切なパラメーターを持つ関数/メソッド、リターンステートメント/出力、完全なプログラムを使用できます。あなたの電話。 デフォルトの抜け穴は禁止されています。 可能であれば、コードのテストへのリンクを追加してください。 また、必要に応じて説明を追加してください。 テストケース(dd-MM-yyyy形式として): 21-07-2016 -> 12-12-6102 …
18 code-golf  date 

23
クイックゴルフ:ゴールドリーダー
チャレンジ ここのAPIからのデータを使用して、2016年のリオオリンピックでオリンピックの金メダルが最も多かった3か国の名前を出力します(返されたリストの最初の要素)。 たとえば、投稿時(8月15日、月曜日、18:23 UTC + 1)、米国、英国、および中国が最も多くの金メダルを獲得しているため、出力は次のようになります。 United States Great Britain China 国名は改行で区切る必要があり、先頭または末尾に改行がある場合があります。 オリンピックが終了すると、プログラムは期待どおりに機能する必要はありません。 URL短縮サービスは許可されていませんが、JSON解析ライブラリは許可されています。 これはコードゴルフであるため、バイト単位の最短コードが優先されます。 ここでオリンピックをテーマにした挑戦を続けようとしています。 リーダーボード コードスニペットを表示 var QUESTION_ID=89919,OVERRIDE_USER=30525;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"https://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a=r.match(SCORE_REG);a&&e.push({user:getAuthorName(s),size:+a[2],language:a[1],link:s.share_link})}),e.sort(function(e,s){var r=e.size,a=s.size;return r-a});var s={},r=1,a=null,n=1;e.forEach(function(e){e.size!=a&&(n=r),a=e.size,++r;var t=jQuery("#answer-template").html();t=t.replace("{{PLACE}}",n+".").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SIZE}}",e.size).replace("{{LINK}}",e.link),t=jQuery(t),jQuery("#answers").append(t);var o=e.language;/<a/.test(o)&&(o=jQuery(o).text()),s[o]=s[o]||{lang:e.language,user:e.user,size:e.size,link:e.link}});var t=[];for(var o in s)s.hasOwnProperty(o)&&t.push(s[o]);t.sort(function(e,s){return e.lang>s.lang?1:e.lang<s.lang?-1:0});for(var c=0;c<t.length;++c){var i=jQuery("#language-template").html(),o=t[c];i=i.replace("{{LANGUAGE}}",o.lang).replace("{{NAME}}",o.user).replace("{{SIZE}}",o.size).replace("{{LINK}}",o.link),i=jQuery(i),jQuery("#languages").append(i)}}var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk",answers=[],answers_hash,answer_ids,answer_page=1,more_answers=!0,comment_page;getAnswers();var SCORE_REG=/<h\d>\s*([^\n,]*[^\s,]),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/,OVERRIDE_REG=/^Override\s*header:\s*/i; body{text-align:left!important}#answer-list,#language-list{padding:10px;width:290px;float:left}table thead{font-weight:700}table td{padding:5px} <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> …

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