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

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

8
ランダムクイン
自分自身をランダムに生成できるプログラムを作成します。 ソースコードで使用されるトークンに基づいてこれを行う必要があります。プログラムのソースコードが50個の一意のトークンで構成され、60個のトークンの長さがある場合、プログラムは各トークンが50個の一意のトークンからランダムに選択される60個のトークンを出力する必要があります。 たとえば、このプログラムは50 ^ 60分の1の確率で自分自身を再現します。 トークンとは何ですか?それは言語に依存します。たとえば、識別子(foo_bar)、キーワード(while)、および数字(42)は、ほとんどの言語でトークンとしてカウントされます。空白はほとんどの言語でカウントされません。 追加のルール: 出力には、プログラムのソースコードにあるトークンのみが含まれ、適切な区切り文字で区切られます 出力は、トークンでカウントされたプログラムのソースコードと同じ長さである必要があります 使用できるプログラミング言語は1つだけです ソースコードには少なくとも3つの一意のトークンが必要です ソースコードからコメントを除外する プログラムは、自分自身を再現する機会がU ^ Lに1つしかないはずです。 スコアリング:自分自身を再現する最良のチャンスがあるプログラムが勝ちます。

24
文字を削除して回文を作成する
問題 単語がパリンドロームになるようにその文字の1つを削除できる場合、その単語はほとんどパリンドロームであるとしましょう。あなたの仕事は、特定の単語に対して、回文を取得するために削除する文字を決定するプログラムを書くことです。 プログラミング言語でこれを行う最短のコードが優先されます。 入力 入力は、2〜1000文字の大文字の単語で構成されます。 出力 削除する必要がある文字の1インデックス位置(左端の文字に位置1、次の位置に位置2など)を出力します。回文につながる可能性のある選択肢がある場合、それらの位置のいずれかを出力します。指定された単語がすでに回文である場合でも、文字を削除する必要があることに注意してください。指定された単語がほとんど回文ではない場合、-1を出力します。 例 入力: racercar 出力を生成する可能性があります: 5 5th文字を削除するracecarと、回文であるが生成されるためです。 また、入力 racecar それでも出力を生成できます 4 4生成するth文字を削除することraccarは、まだ回文です。
15 code-golf 

5
ASCIIアート番号を認識する
チャレンジ ASCIIアート番号を認識します。物事を面白くするために、画像内の3つのランダムなポイントを反転させることができます。例えば: ***** * ** ** ** ** ** 入力 以下のPythonスクリプトによって生成された7x7 ASCIIアート番号。 出力 数字。 テストスクリプト テストケースを生成するPythonスクリプト(2.6以降)は次のとおりです。 import random digits = '''\ *** ** ** ** ** ** ** ** ** ** ** *** * *** * * * * ***** *** * ** * ** ** ** ****** *** * …

7
ホワイトノイズを生成する
課題は、ホワイトノイズで作成されたオーディオファイルを生成することです。 要件と手順: プログラムは、ホワイトノイズのみを含むオーディオファイルを生成する必要があります。つまり、その強度は、すべての(合理的な)周波数とゼロ以外で同じです[ プロット例を参照]。 VLCの最新バージョンで音声ファイルを再生できる必要があります(回答を書いている時点)。 プログラムは暗号的に強力なランダム性、rand関数、または読み取りは必要ありません/dev/rand。 プログラムは、少なくとも理論的には少なくとも1時間のオーディオを生成できなければなりません(つまり、最大ファイルサイズなどのシステム制限は適用されません)。 スコアは、ソースコードのバイト数と、適用されるすべてのボーナスです。 サードパーティの外部ライブラリを使用しても問題ありません。 プログラムは、インターネットにアクセスせずに動作する必要があります。 ボーナスは次のとおりです。 -15%:オーディオファイルの形式の指定を許可します(少なくとも2つの選択肢。可能な選択肢の数はスコアを変更しません)。 -10%:オーディオファイルの長さを指定できます。 -5%:オーディオファイルのビットレートを指定できます。 設定は変数、ファイルに保存するか、コマンドラインパラメーターとして指定できます。パーセンテージは、ボーナスが適用される前の元のバイト数から計算されます。

3
三目並べゲーム
遊びnに決定論的なプログラムを作成してD他の競技者との三目並べ。 n(幅)とd(次元数)が次の範囲にある場合、プログラムは動作するはずです。 n∈[3,∞)∩ℕ ie a natural number greater than 2 d∈[2,∞)∩ℕ ie a natural number greater than 1 n = 3; d = 2(3 2すなわち3 x 3): [][][] [][][] [][][] n = 3; d = 3(3 3すなわち3 x 3 x 3): [][][] [][][] [][][] [][][] [][][] [][][] [][][] [][][] [][][] …

18
英数字バランス
入力として文字列を取得し、その中の英数字および非英数字の数をカウントするプログラムを作成します。次のように結果を表示する必要があります。 入力:http://stackexchange.com 出力:20 + 4 = 24 問題は、ソースコードに英数字以外の文字と同じ数の英数字を使用する必要があることです。コメントは許可されません。空白は無視されます。(ホワイトスペースと呼ばれる言語は投票のために競争するかもしれませんが、明らかに勝者として選択されません) コード内の文字には、少なくとも多少の正当化が必要です。完全に不必要であってはなりません。たとえば、長い変数名も許可されますが、i = (j*3)+4;代わりにi = j*3+4;許可されます。しかし、そうでi = i + 1;;;;;;はありません。 これに加えて、標準のコードゴルフ規則が適用されます。

9
任意精度の除算を実装する
divide(int a, int b, int c)のベース10値を出力する関数を実装しますa/b。浮動小数点演算もBigInteger/ BigDecimalまたは同等のライブラリも一切使用しません。以下の4の(可能性のある)例外を除きc、のセット内の少なくとも正確な文字を0123456789.印刷する必要があります。 aそしてb、任意の32ビットの整数であってもよいです。更新:ゴルフの目的で、入力に問題のない64ビットプリミティブを使用する場合は、64ビット範囲のデータ全体をサポートする必要はありません。 そうでない場合は、それcが正であることを確認する必要はありません(ただし、プログラムがクラッシュしないことを願っています)。 のサポートされる最小の上限cは500です。プログラムがc上記の値をサポートしていない場合でも問題ありませんが、サポート500している場合でも問題ありません。 数値が均等に分割される場合、余分なゼロを(の値に基づいて)印刷するかc、何も印刷しないかを選択できます。 この関数を使用して商でさらにタスクを実行する必要はありません。唯一の目標は印刷です。 -1との間の数値について1は、先頭を印刷するかどうかを選択します0。ただし、これは先行ゼロの印刷が許容される唯一のシナリオであり、このようなゼロを1つだけ印刷できます。 最後の小数位には、任意の丸め/フロア/セルロジックを使用できます。 否定的な答えを得るには、先頭に-。を印刷する必要があります。これはにカウントされませんc。しかし、それはあなたが印刷したい場合はあなたの選択ではない、+または肯定的な回答のために何も。 整数除算と整数モジュラスの両方が許可されます。ただし、コードの長さに対してカウントされる独自のBigInteger/ BigDecimalライブラリを実装することを選択しない限り、プリミティブに制限されることに注意してください。 あなたが処理する必要がありませんbという0ことができますけれども、あなたがしたい場合は、。プログラムが無限ループに入るか、ifがクラッシュすると、b=0ペナルティは科せられません。 コメントごとにわずかなルール変更。競技場が水平でありa、b32ビット整数であることが保証されるようにするには、64ビット長整数を使用できます。選択した言語がプリミティブとして64ビット整数を超える場合、その機能を使用することはできません(64ビットで制限されているふりをする)。 不明な点(現在の有効な回答は変更しないでください):c印刷文字数または小数点以下のスペース数として解釈される場合がありますが、プログラムはc何らかの方法で関連する方法で使用する必要があります印刷する文字数を決定します。言い換えれば、divide(2,3,2)よりもはるかに短い出力であるべきdivide(2,3,500)です。に関係なく500文字を印刷することはできませんc。 実際、関数の名前は気にしません。dゴルフの目的には大丈夫です。 入力 関数呼び出しと読み取りの両方stdinが受け入れられます。から読み取る場合stdin、セットにない文字は[-0123456789]引数の区切り文字と見なされます。 出力 stdout上記の文字。 例 の場合divide(2,3,5)、次のすべてが許容可能な出力です。 0.666 0.667 .6666 .6667 0.666 0.667 .6666 .6667 +0.666 +0.667 +.6666 +.6667 別の例:divide(371,3,5)以下については、すべて受け入れられる出力です。 123.6 123.7 123.6 123.7 +123.6 +123.7 123.66666 123.66667 123.66666 123.66667 …

7
東で最も速いキツネ
Hello world!の精神で!繰り返しなし オプションの改行を使用して、「速い茶色のキツネが怠laな犬を飛び越える」という文字列を出力するプログラムを作成します。プログラム全体で文字を繰り返さないでください。 印刷される文字列に注意してください し、あなたが何らかの形でその制限を周りに取得する必要がありますので、繰り返し文字が。 勝者の条件は、popularity-contest、つまり、最も投票数の多い回答であることに注意してください。勝ちます。 更新:これを少し簡単にするために、繰り返しは許可されますが、最小化を試みる必要があります。繰り返しの少ない(またはまったくない)プログラムは、繰り返しのあるプログラムよりも優先されます。

8
フラクタルツリーを作成する
私が見たいのは、整数を入力できるフラクタルツリーです。出力は、入力された分岐ステップ数のフラクタルツリーになります。 ルール: フラクタルはラインフラクタルツリーである必要があります。 フラクタルの形状もこの図と同じでなければなりません。 各分岐は、分岐するたびに幅が25%減少するはずです。 ブランチの最終層は1ピクセル幅の線である必要があります 最短のコードが勝つ ヒント:このサイトは役に立つかもしれません。

26
「Hello world!」、各文字をn回繰り返す[終了]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 閉じた3年前。 選択した言語で、正確に出力するプログラムを作成しますHello world!。プログラムの各文字をn回繰り返す必要があります-nを選択します。 たとえば、nに 2を選択できます。これは、ソースコードで使用されるすべての文字がその回数、つまり0である必要があることを意味します。 nに3を選択した場合、このプログラムは有効になります。 ab(b(b(aa)));;; ルール: 外部リソースは使用できません ユーザー入力を提供できません 正確 Hello world!に出力する必要があります。改行は例外であり、オプションです。 nは2以上でなければなりません。 目標を達成するためにコメントを使用することは非常に推奨されません。 14日間で終了する人気コンテスト。最後に最高得点が勝ちます!

6
コードインジェクションはC#でも機能します!
次のC#プログラム出力が与えられた場合、プログラムが出力するようFalseに「悪意のある」コード行を挿入しますTrue。 class Program { static void Main() { System.Console.Write("False"); ; } } あなたの答えは、第二のセミコロンを置き換え、出力するプログラム原因となる文字列で構成する必要がありTrue、全体Trueと何もなく、True(いなくても改行を)。stdoutがコンソールに出力され、stdoutがファイルにリダイレクトされる場合、これを行う必要があります。 最短の答えが勝ちです。

30
ゴールドバッハの予想
2より大きい偶数の整数をユーザーに求めるプログラムを作成します。 2より大きいすべての整数は2つの素数の合計として表現できるというGoldbachの推測を考えると、2つの素数を出力し、それらを加算すると、要求された偶数を提供します。編集:プログラムは、すべてではなく素数のペアを印刷するだけです。例えば: 4:2 + 2 6:3 + 3 8:3 + 5 10:5 + 5または3 + 7
15 code-golf  primes 

20
クイン...しかし、1つシフト
10進数の印刷可能なASCII文字コードを参照すると、32から126までの間に32が(スペース)である印刷可能な文字があることがわかります。あなたの課題は、32〜125(126を除く)の文字のみを使用してプログラムを作成し、実行時に独自のソースコードを印刷することです。ただし、ソースコードの各文字のASCIIコードは1つ増えます。 たとえば、ソースコードが main(){printf("Hello World");} その出力は nbjo)*|qsjoug)#Ifmmp!Xpsme#*<~ 以下は禁止されています。 外部ファイルまたはストレージ(インターネットを含む)の読み取り/書き込み/使用 独自のソースコードの読み取り/エコー 2文字未満のソースコード(面白くない)。2以上でなければなりません。 少なくとも2週間待った後、任意の言語で最高の賛成票を獲得した回答が勝者となり、少ない文字数がタイブレーカーとなる人気コンテストになります。

12
ソートされた整数のリストからバランスの取れたBSTを作成する
一意のソートされた整数のリストを指定して、再帰を使用せずに配列として表されるバランスの取れたバイナリ検索ツリーを作成します。 例えば: func( [1,2,3,5,8,13,21] ) => [5,2,13,1,3,8,21] 始める前に、ヒント:この問題を1トン単純化し、入力整数(またはその点で同等のオブジェクト)を実際に考慮する必要がないようにします。 入力リストが既にソートされていることがわかっている場合、そのコンテンツは無関係です。元の配列へのインデックスの観点から単純に考えることができます。 入力配列の内部表現は次のようになります。 func( [0,1,2,3,4,5,6] ) => [3,1,5,0,2,4,6] これは、比較可能なオブジェクトを処理する必要があるものを記述するのではなく、範囲[0、n)から結果の配列にマップする関数を記述するだけでよいことを意味します。新しい順序を取得したら、入力の値にマッピングを適用して戻り配列を作成できます。 有効なソリューションは次の要件を満たす必要があります。 ゼロ要素配列を受け入れ、空の配列を返します。 長さnの整数配列を受け入れ、整数配列を返します nから2マイナス1の次に高い累乗の間の長さ(たとえば、入力サイズ13の場合、13から15の間のいずれかを返します)。 ルートノードが位置0にあり、高さがlog(n)に等しいBSTを表す配列。0は欠落ノード(またはnull言語で許可されている場合は-like値)を表します。空のノードは、存在する場合、のみ(例えば、木の端部に存在しなければなりません[2,1,0]) 入力整数配列には、次の保証があります。 値はゼロより大きい32ビット符号付き整数です。 値は一意です。 値は、位置ゼロから昇順です。 値はまばらかもしれません(すなわち、互いに隣接していない)。 ASCII文字カウントによる最も簡潔なコードが優先されますが、特定の言語向けのエレガントなソリューションを見ることにも興味があります。 テストケース 含む単純なアレイの出力1にn種々のためn。上記のように、末尾0のsはオプションです。 [] [1] [2,1,0] [2,1,3] [3,2,4,1,0,0,0] [4,2,5,1,3,0,0] [4,2,6,1,3,5,0] [4,2,6,1,3,5,7] [5,3,7,2,4,6,8,1,0,0,0,0,0,0,0] [6,4,8,2,5,7,9,1,3,0,0,0,0,0,0] [7,4,9,2,6,8,10,1,3,5,0,0,0,0,0] [8,4,10,2,6,9,11,1,3,5,7,0,0,0,0] [8,4,11,2,6,10,12,1,3,5,7,9,0,0,0] [8,4,12,2,6,10,13,1,3,5,7,9,11,0,0] [8,4,12,2,6,10,14,1,3,5,7,9,11,13,0] [8,4,12,2,6,10,14,1,3,5,7,9,11,13,15]

5
SHA-1ハッシュアルゴリズムの実装
このcode-golfの目標は、入力として文字列を受け取るプログラムを作成することであり、SHA-1ハッシュ値を16進数として出力する必要があります。ここでSHA-1の擬似コードを見つけることができます その他の規則: ネットワークアクセスなし 外部プログラムの実行は許可されていません 組み込みメソッドを使用して入力をハッシュすることは許可されていません 最短のコードが勝ちます ASCII入力を処理する必要があるだけです 出力は小文字でも大文字でもかまいません 入力は次を使用して提供できます。 入力を促す コマンドライン引数を使用する STDINを使用する テストケース: Input: The quick brown fox jumps over the lazy dog Output: 2fd4e1c67a2d28fced849ee1bb76e7391b93eb12 ---------------------------------------------------------- Input: The quick brown fox jumps right over the lazy dog Output: 1c3aff41d97ada6a25ae62f9522e4abd358d741f ------------------------------------------------------------ Input: This is a code golf challenge Output: f52ff9edd95d98e707bd16a7dead459cb8db8693

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