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

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

27
別のリストの値のインデックスを見つける
入力として正の整数の2つのリストを受け取る必要があります。これらをnとmと呼びましょう。 あなたはそれを仮定するかもしれません: nのすべての整数はmの一部です mのすべての整数は一意です リストは空ではありません 課題:n、mの値を見つける場所のインデックスを返します。 紛らわしいかもしれませんが、テストケースによってタスクがかなり明確になると思います。例は1から始まり、必要に応じて0から選択できます(指定してください)。 n = 5 3 4 1 m = 6 8 4 1 2 5 3 100 output: 6 7 3 4 // 5 is in the 6th position of m // 3 is in the 7th position of m // 4 is in …
21 code-golf  number 

10
役に立たないキャラクターを並べ替える
この課題は、TidB によるこの非常に良い答えに触発されています。 :TidBの答えでは、すべての8つの文字は、正しい順序であるgnilwoB edoC(Code Bowling後方)。他の文字列は、しかししている奇妙な、ランダムな順でした。 あなたの課題はこれを修正することです。 (空ではない)文字列と正の整数nを入力として受け取ります。文字列には、32〜126(チルダまでのスペース)の範囲のASCII文字が含まれます。 文字列を昇順(ASCIIコード値に基づいて左から見て)に並べ替える必要がありますが、文字列nの末尾からすべての文字をスキップします。例として、文字列abcdABC123を入力として受け取り、をn=4取得すると、次のようになります。 abcdABC123 <- Input string. (n=4) _b___B___3 <- These will not be sorted (every 4th starting from the end) 1_2AC_acd_ <- The remaining characters, sorted 1b2ACBacd3 <- The final string (the output) もう一つの例: 9876543210 <- Input string (n=2) _8_6_4_2_0 <- These will not …

30
すべてのk-mer / n-gram
イントロ 私たちは持っていたヒストグラムとカウントを、それらのすべてをリストではありません。 毎年、Dyalog Ltd.は学生コンテストを開催しています。そこでの課題は、優れた APLコードを書くことです。これは、今年の6番目の問題の言語に依存しないコードゴルフ版です。 コンテストの元の著者からこのチャレンジをここに投稿する明示的な許可があります。提供されたリンクに従って作成者に連絡することにより、気軽に確認してください。 問題 k-merという用語は、通常、文字列に含まれる長さkのすべての可能な部分文字列を指します。計算ゲノミクスでは、k-merは、DNAシーケンスで取得した読み取りから(長さkの)すべての可能なサブシーケンスを指します。文字列とk(部分文字列の長さ)を取り、元の文字列のk-merのベクトルを返す/出力する関数/プログラムを作成します。 例 [4,"ATCGAAGGTCGT"] → ["ATCG","TCGA","CGAA","GAAG","AAGG","AGGT","GGTC","GTCG","TCGT"] k >文字列の長さ?戻り何/空の結果: [4,"AC"]→ []または""または[""]

16
固有ペアの検証
この課題では、正方行列A、ベクトルv、およびスカラーが与えられますλ。に(λ, v)対応する固有ペアかどうかを判断する必要がありAます。つまり、かどうかAv = λv。 ドット積 2つのベクトルのドット積は、要素ごとの乗算の合計です。たとえば、次の2つのベクトルの内積は次のとおりです。 (1, 2, 3) * (4, 5, 6) = 1*4 + 2*5 + 3*6 = 32 内積は、同じ長さの2つのベクトル間でのみ定義されることに注意してください。 行列ベクトル乗算 マトリックスは、値の2Dグリッドです。mXのn行列がありm、行とn列を。(行を取得する場合)mx n行列mを長さのベクトルとして想像できnます。 行列とベクトルの乗算は、mx n行列とサイズnベクトルの間で定義されます。mx n行列とサイズnベクトルを乗算すると、サイズベクトルが得られmます。i結果ベクトルの-th値iは、行列の-th行と元のベクトルのドット積です。 例 1 2 3 4 5 Let A = 3 4 5 6 7 5 6 7 8 9 1 3 Let …

16
Fat Fingersを修正する
コードゴルフチャレンジ 私には期限があり、fingrrsは太っていて、キーボードを右に1つキーボードに固定するという理由で頻繁にやります。 時間が経つにつれて、この問題は悪化するのではないかと心配しています。 私はすべてのkeystrpkeをSopnします。右にずらしてください! Befpreそれから私はプログラム(またはfunctipn)がすべてのkeystrpkeを左に戻すようにautpすることを望みます。 残りのtjis chal; typongに私の本を必ず連れて行きます。anuconfudionを引き起こさないようにしましょう! 目的: 標準のQWERTYキーボードで次の緑色のキーのいずれかを入力し、その左側のキーの文字を返すプログラムまたは関数を作成します。 条件: •このプログラムを実行している人が、上の図のようなQWERTYキーボードを使用していると思われるかもしれません。 入力と出力はどちらも大文字と小文字を区別しません。このチャレンジでは任意のケース(または大文字と小文字の組み合わせ)を使用できます。また、必要に応じてすべての入力が1つのケースにあると仮定することもできます。 •言語に何らかの理由でユーザーがリターンキーを入力できるようにする方法がない場合、このためのその1つのキーストロークを無視できます。 •このチャレンジは、キーのデフォルト値のためだけのものです。たとえば、4キーが押された場合、常にそうで4あり、決してないことを想定できます。$ •緑のキーのみが押されると想定できます。 例Input-> Output: S->-> a 4-> 3 =-> - [->p これはcode-golfなので、バイトカウントが最も短いプログラムが勝ちます!

8
ゴロムの不安定なシーケンス
OEISにはGolombのシーケンスにバリエーション(A111439)があります。GolombのシーケンスのA(n)ようnに、シーケンスに表示される頻度を説明します。ただし、さらに、連続する2つの番号が同一であってはなりません。シーケンスを構築する際、A(n)これらの2つのプロパティに違反しない最小の正の整数として常に選択されます。連続する同一の番号が許可されていないため、シリーズは成長するにつれてわずかに上下に揺れます。最初の100の用語は次のとおりです。 1, 2, 3, 2, 3, 4, 3, 4, 5, 6, 5, 6, 5, 6, 7, 6, 7, 8, 7, 8, 9, 8, 9, 8, 9, 10, 9, 10, 9, 10, 11, 10, 11, 10, 11, 10, 11, 12, 11, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, …

14
平均が最小の部分行列を見つける
整数のn行m列の行列が与えられます。ここで、n、m> 3です。あなたの仕事は、平均値が最も低い3行3列の部分行列を見つけ、この値を出力することです。 規則と説明: 整数は負ではありません オプションの入出力形式 出力は、少なくとも2桁の小数点以下まで正確でなければなりません(整数でない場合)。 部分行列は、連続する行と列で構成する必要があります テストケース: 35 1 6 26 19 24 3 32 7 21 23 25 31 9 2 22 27 20 8 28 33 17 10 15 30 5 34 12 14 16 4 36 29 13 18 11 Minimum mean: 14 100 65 2 …
21 code-golf  math  matrix 

10
そのリストにはいくつのブラックジャックシーケンスがありますか?
あなたの仕事は、12枚のカードの順序付けられたリストでいくつの異なるブラックジャックシーケンスが見つかるかを見つけることです。 ブラックジャックシーケンスは、ポイントの合計が正確に21である連続したカードのシーケンスとして定義されます。ポイントは、次の表に従ってカウントされます。 Symbol | Name | Points Symbol | Name | Points -------+-------+-------- -------+-------+-------- 2 | Two | 2 9 | Nine | 9 3 | Three | 3 T | Ten | 10 4 | Four | 4 J | Jack | 10 5 | Five | 5 Q …

24
タイトルに隣接する文字はありますか?[3、4]!
タイトルの意図が間違っています。詳細を読んで理由を確認してください。 あなたのタスク:文字を含む区切り文字列またはリストを指定A,B,C,Dすると、隣接するすべての等しい文字のインデックスを出力します。出力は、複数行の複数の文字列/整数、リスト/配列、または区切り文字列にすることができます。 すべての出力は、リストまたは文字列、または複数の印刷行である必要があります。複数の行がある場合、各印刷行には1つの文字列または数字のみを含める必要があります。後続のものは大丈夫です。 入出力の標準的な方法。標準の抜け穴が適用されます。 たとえば、0から1のインデックスが付けられているかどうかに応じて、入力'ABCDDCBA'はoutput 3,4またはを出力する必要4,5があります。これは、これらの番号がそのインデックスDとそのD隣にあるためです。 テストケース: テストケースには、単一の文字列として入力が与えられ、- ,区切り文字列として出力されます。出力のインデックスは0になります。出力されるすべてのアイテムに1を追加して、インデックスを1にするようにします。 Input: 'ABCDCABCD' Output: '' Input: 'AABBCCDD' Output: '0,1,2,3,4,5,6,7' Input: 'ABCDDDCBA' Output: '3,4,5' Input: 'ABBCDD' Output: '1,2,4,5' これはcode-golfなので、最短のコードが勝ちです!

20
どうやってこのFizzBu​​zzになったのですか?
FizzBu​​zzはとても簡単です。この課題では、FizzBu​​zz文字列の長さを指定し、その文字列を生成した正の整数を指定する必要があります。 説明 これを分解するためにn、次のアルゴリズムによってFizzBu​​zz文字列が生成されます。 空の文字列で開始し、すべてi=1..n(包括的)に対して: 場合はiで割り切れる3とによって5、APPEND FizzBuzz文字列に。 if iが3appendで割り切れるだけFizzです。 if iが5appendで割り切れるだけBuzzです。 iどちらでも割り切れない場合は、の10進表現を追加しますi。 たとえばFizzBuzz(15)、次のとおりです。 12Fizz4BuzzFizz78FizzBuzz11Fizz1314FizzBuzz あなたが与えられLength(FizzBuzz(n))、決定する必要がありnます。入力が正であり、常にFizzBu​​zz文字列の長さになると仮定することができます。 ルール ソリューションは、完全にプログラムまたは標準的に受け入れ可能な言語の関数定義である場合があります。プログラム/関数は、引数を取り、標準的に受け入れられている方法で回答を返す場合があります。標準的な抜け穴は禁止されています。 入力は正で有効(FizzBu​​zz文字列の長さを表す)であり、言語でネイティブに表現できる最大の整数より小さいと仮定できます。 これはコードゴルフであるため、最短バイト数が勝ちます。 例 ここにいくつかの例があります Length(FizzBuzz(n)) -> n 1 -> 1 6 -> 3 15 -> 6 313 -> 100 3677 -> 1001 編集 最後のテストケースを修正しました。@SteadyBoxに感謝します。
21 code-golf 

2
いくつかの周期的および非周期的部分を交換します
すべての有理数の10進表現にp/qは、次の形式で周期的なテール、非周期的なヘッド、および小数点の前のセクションがあります。 (before decimal point).(non-periodic)(periodic) 以下に例を示します。 1/70 = 0.0142857... = (0).(0)(142857) 10/7 = 1.428571... = (1).()(428571) ## no non-periodic part 1/13 = 0.076923... = (0).()(076923) 3/40 = 0.075 = (0).(075)() ## no periodic part -2/15 = -0.13... = -(0).(1)(3) ## negative 75/38 = 1.9736842105263157894... = (1).(9)(736842105263157894) ## periodic part longer than …

8
季節のプレゼントを包む
仕事 ラッパー要素とギザギザのない3D配列を指定して、配列の上部、下部、および全周をラップします。文字データと数値データの両方を処理する必要がありますが、ラッパーと現在のデータ型は同じです。 キャラクターの例 文字データの場合、単一文字の3D配列または文字列の2D配列を処理することを選択できます。 2層、2行、4列の文字配列を考える [[["Y","o","u","r"], ["g","i","f","t"]], [["g","o","e","s"], ["h","e","r","e"]]] そして、文字"."、4層、4行、6列の文字配列に答えます [[[".",".",".",".",".","."], [".",".",".",".",".","."], [".",".",".",".",".","."], [".",".",".",".",".","."]], [[".",".",".",".",".","."], [".","Y","o","u","r","."], [".","g","i","f","t","."], [".",".",".",".",".","."]], [[".",".",".",".",".","."], [".","g","o","e","s","."], [".","h","e","r","e","."], [".",".",".",".",".","."]], [[".",".",".",".",".","."], [".",".",".",".",".","."], [".",".",".",".",".","."], [".",".",".",".",".","."]]] または、4文字の文字列の2行2列の配列を指定します [["Your", "gift"], ["goes", "here"]] そして、文字"."、6文字の文字列の4行4列の配列に答えます [["......", "......", "......", "......"], ["......", ".Your.", ".gift.", "......"], ["......", ".goes.", ".here.", "......"], ["......", "......", "......", "......"]] 数値の例 2層、2行、2列の数値配列が与えられた場合 …

8
アーノルドの猫マップ
チャレンジ 同じ幅と高さのカラーラスターイメージ*が与えられた場合、Arnoldのcat mapで変換されたイメージを出力します。(*詳細は以下を参照) 定義 画像のサイズNが与えられると、ピクセルの座標が0との間の数として与えられると仮定しN-1ます。 Arnoldの猫マップは、次のように定義されます。 座標のピクセル[x,y]がに移動し[(2*x + y) mod N, (x + y) mod N]ます。 これはトーラス上の線形変換に他なりません。黄色、紫、緑の部分は、のために最初の正方形にマッピングされますmod N。 このマップ(呼び出しましょうf)には次のプロパティがあります。 これは全単射であり、可逆を意味します。これは、行列を使用した線形変換[[2,1],[1,1]]です。行列式が1あり、整数エントリのみを持つため、逆行列にも整数エントリのみがあり、で与えられます[[1,-1],[-1,2]]。これは、整数座標でも全単射であることを意味します。 これは、画像の全単射マップのグループのねじれ要素です。N x Nつまり、十分に何度も適用すると、元の画像が元に戻りますf(f(...f(x)...)) = x。マップ自体に適用される結果、同一性が得られる回数は、またはに等しい3*N。以下では、Arnoldの猫マップの反復アプリケーションの指定回数後の猫の画像と、繰り返しアプリケーションがどのように見えるかのアニメーションを見ることができます。 詳細 プログラムは必ずしも画像を処理する必要はありませんが、2D配列/行列、文字列、または同様の2D構造も受け入れられます。 (0,0)ポイントが左下にあるか左上にあるかは関係ありません。(または、あなたの言語でこれがより便利な場合は、他のコーナーで。)提出で使用する規則を指定してください。 テストケース マトリックス形式([1,2,3,4]最上行、1インデックスあり(0,0)、2インデックスあり(1,0)、5インデックスあり(0,1)) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 maps to: 1 14 …

20
パス上のすべての座標を見つける
入力として2D文字列を指定します。改行または行のリストを含む文字列として、リスト内(x, y)のすべてのハッシュ(#)の座標を出力します。入力にはハッシュとスペースのみが含まれます。(入力を2D文字列として取得することを選択した場合は改行) ハッシュがない場合は、何でも出力できます。 出力は、どの番号がどの番号とペアになっているかについて明確でなければなりません。 例: ## 出力する必要があります: (0,0), (1,0) これは、左上から始まる0から始まるインデックス付けを前提としています。任意のコーナーから開始し、0または1ベースのインデックスを使用するか、y最初に出力することができます。(例えば、フォームでy,x)。 その他のテストケース(ここでも、すべて0から(x, y)始まる左上のインデックスを使用): # ##### # (4, 0), (0, 1), (1, 1), (2, 1), (3, 1), (4, 1), (0, 2) # ### ### # (0, 0), (2, 0), (3, 0), (4, 0), (0, 1), (1, 1), (2, 1), (4, 1) これらのテストケースはすべて、パスをたどるのではなく、行ごとにリストされることに注意してください。 …

30
私の変化を数える
あなたの仕事は、彼らがこの順になっているので、ということがない特定の順序で「DIME」、「ニッケル」、および「ペニー」、何度でも文字列「四半期」を含む配列をソートし、ソートそれらすることです。quarter dime nickel penny(つまり、最大から最小の金額)。 ルール プログラムは、入力として米国のコインの名前を含む配列を取り、金銭的価値の大きい順に並べる必要があります。 米国から来ていない人、または変更を使用していない人にとって、米国の硬貨の価値は次のとおりです。 四半期:25セント ダイム:10セント ニッケル:5セント ペニー:1セント 出力が上記の金額で並べ替えられている限り、この配列を任意の方法で並べ替えることができます。 入力は、コマンドライン引数またはSTDINのいずれでも、任意の方法で取得できます。 入力配列はすべて次のような小文字の文字列になります。 quarter dime nickel nickel quarter dime penny penny 入力と出力の実際の形式はあなた次第です。 テストケース "penny nickel dime quarter" -> "quarter dime nickel penny" "nickel penny penny quarter quarter quarter dime dime dime dime" -> "quarter quarter quarter dime dime dime …

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