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

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

16
どれだけ素早く増殖できますか?
最近のPython バッシングで、Pythonの強みを示す試みがあります。あなたの課題は、n10秒以内にできるだけ大きな数の階乗を計算するプログラムを書くことです。 あなたのスコアは (highest n for your program on your machine)/(highest n for my program on your machine) ルール 正確な整数解を計算する必要があります。階乗は64ビットの符号なし整数に収まるものよりもはるかに高いため、言語が大きな整数をサポートしていない場合は文字列を使用できます 標準的な抜け穴は禁止されています。特に、外部リソースは使用できません。 計算部分(これには文字列を使用した回避策の時間が含まれます)のみが合計時間に追加され、平均で10秒未満になります。 シングルスレッドプログラムのみ。 出力は簡単に印刷可能な形式(印刷に時間がかかるため)(以下のプログラムを参照)、文字列、変数、文字配列などに保存する必要があります。 編集: プログラムは、すべてに対して正しい出力を提供する必要がありますn。1 <= n <= (your highest n) EDIT2: 私はこれを明示的に言うのは嫌いですが、あなたの言語の組み込み階乗関数を使用すると、標準の抜け穴に陥りますhttp://meta.codegolf.stackexchange.com/a/1078/8766 すみません 私のプログラム from __future__ import print_function import time def factorial( n ): return reduce( ( lambda …

3
3による可分性のための回路の構築
TCS のブール回路は、基本的にAnd、Or、Notゲートで構成されるDAGであり、「機能的完全性」が知られていることにより、可能なすべての機能を計算できます。例えば、これはALUの基本原則です。 課題:8進数の数字が3で割り切れるかどうかを判断する回路を作成し、何らかの方法で結果を視覚化します(つまり、何らかの画像で) 投票者の判断基準は、回路を生成するコードが任意のサイズの数値にうまく一般化されているかどうか、およびアルゴリズムで作成された視覚化がコンパクト/バランスが取れているがまだ人間が読み取れるかどうかに基づいています(つまり、手作業による視覚化は許可されていません)。すなわち、視覚化はn = 8のみに対して行われますが、コードはすべての「n」に対して理想的に機能します。入賞作品はトップ投票のみです。 やや似た質問:NAND論理ゲートを使用して乗算機を構築する

3
ASCIIアートで星の爆発を表示する
目標は、ASCIIアートで爆発する星をアニメーション化することです。単一の星のキャラクターから始まり*、超新星、そして最終的には宇宙の虚空に至るまでです。 ルール: 24行で1行あたり80文字のみを表示する必要があります(これはLinuxのデフォルトの端末サイズです) ASCIIからのこれらの95の印刷可能文字のみが許可されます 手順: 最初の星は*、水平方向と垂直方向の中心になければなりません 星は爆発することを示すために成長しなければなりません 最後に画面は空でなければなりません(星が消えました) コードまたは言語の長さは無関係です 投票により、最も創造的で美しい結果が決まります。爆発する星を見たことがありますか?これをどう想像するか見てみましょう。 Pythonを例として使用して回答を追加しましたが、別のまたはより良いものを作成することをお勧めします。 参加するのに1週間あり、2014-04-01に勝者が選ばれます。 出力のサンプル(一部のフレームのみ): # start * # during explosion ****#**** ***#@##*#@#**** *@**@@@*##**#*#**#* **@@*#**#@*#@****#*** ****@*@***#****@**@@* *******@***@@***#****#* *#***#*##@****##@@@** **#@###****@********* *****@**@*@*****@** ************@** ****#**** # star is expanding * ********* **@****** **** **#**@ #**#*# **** *** ** **##** *@@*@* ** *** ** * @@ …

2
インクスポットには何が見えますか?ロールシャッハ世代 '[終了]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 閉じた2年前。 それで、以下の画像のようなロールシャッハ画像を生成してください。 ここからさらなるインスピレーションへのリンクがあります。 これは人気のコンテストですが、テクスチャだけでなく、色は白黒よりも人気が高いと言えます。 ロールシャッハ画像は、インクで紙を折り畳むことによって作成されるため、1つの基準は対称性です。 ASCIIアートは有効ですが、上記と同じ基準が適用されます。

4
CSSの最悪の悪用?[閉まっている]
閉じた。この質問には、詳細または明確さが必要です。現在、回答を受け付けていません。 この質問を改善したいですか?詳細を追加し、この投稿を編集して問題を明確にします。 閉じた2年前。 CSSの最もクール/ベスト/悪い虐待のいくつかは何ですか? たとえば、これらの図形、または複数のボックスシャドウを使用してピクセルアートを作成します。 人気コンテストは16/04/14 で終了します。

7
この数字は2048の良いコンボになりますか?
xkcdに触発されました。 あなたの課題は、ゲーム2048で数字が良い組み合わせになるかどうかを判断することです。入力は次のような数字になります。 8224 そして、出力はその数は、この入力のためになる良い2048コンボ、になるだろうかどうだろうtrueかyesまたは1または陽性の結果を示す任意の他の方法を。 ゲームに慣れていない人のために、簡単な説明があります[2] [2]。次のように、2のべき乗がグリッド上に配置されています。タイルは任意の方向に移動でき、2つの同一のタイルが出会うと、それらは次の2の累乗になります([2] [2]左または右に移動するとになります[4])。または、ここでゲームを試すことができます。 「良い2048の組み合わせ」とはどういう意味ですか?これは、ゲーム内で「2048」であった場合、1つの数字に結合できる任意の数字を意味します。(ゼロは空のスペースを意味し、必要に応じて無視できます。)数字が複数の桁になる可能性があることに注意してください!ただし、数字は移動ごとに変更してはなりません。次に、いくつかの例/テストケースを示します(「良い」は良い組み合わせを示し、「悪い」は良くないことを意味します)。 良い:8224(8224-> 844-> 88-> 16) 良い:2222(2222-> 44-> 8) 良い:22048(22048-> 448-> 88-> 16) 悪い:20482(外側の2を組み合わせることはできず、2048と2を組み合わせることもできません) 良い:20482048(20482048-> 4096) 悪い:210241024(210241024-> 22048ですが、これは[2] [2048]になり、数字は移動ごとに変更できないため、結合できません) 良い:2048(すでに1つの番号です) 悪い:2047(2のべき乗ではありません) 悪い:11(ゲームに1はありません) 良い:000040000000(ゼロは空のスペースです) その他の規則: 入力は、合理的な場所(STDIN、関数の引数、ファイルなど)から行うことができます。 出力は、合理的な場所(STDOUT、関数の戻り値、ファイルなど)でもかまいません。 グリッドサイズを無視します- 22222222それでもtrueが出力されるはずです。 2の累乗である限り、sの数に上限はありません。したがって、可能な数は0より大きい2の累乗です。 あいまいさの原因となるゼロが心配な場合は、そうではありません。たとえば、またはの22048いずれかとして解析できます。最初のものは機能しませんが、2番目のものは機能するため、trueを出力する必要があります。[2] [2048][2] [2] [0] [4] [8] これはcode-golfなので、バイト単位の最短コードが勝ちます!
12 code-golf 

5
ブロックエントロピーを計算する
私はかつて、与えられたブロックサイズに対して与えられたシンボルシリーズのブロックエントロピーを計算する関数を書く必要があり、結果がどれほど短いかに驚いた。したがって、私はあなたにそのような機能をcodegolfに挑戦しています。私が今何をしたか(およびどの言語で)を言っているわけではありませんが、同じまたはより良いアイデアを最初に思い付かなかった場合は、1週間ほど後にします。 ブロックエントロピーの定義: シンボルシーケンスA = A_1、…、A_nおよびブロックサイズmが与えられた場合: サイズmのブロックは、シンボルシーケンスのm個の連続した要素のセグメント、つまり、適切なiのA_i、…、A_(i + m-1)です。 xがサイズmのシンボルシーケンスの場合、N(x)はxと同じAのブロック数を示します。 p(x)は、Aからのブロックがサイズmのシンボルシーケンスxと同一である確率です。つまり、p(x)= N(x)/(n−m + 1) 最後に、Aのブロックサイズmのブロックエントロピーは、Aのサイズmのすべてのブロックxでの-log(p(x))の平均、または-p(x)・log(pの合計(x))Aで発生するサイズmのすべてのxに対して(必要な適切な対数を選択できます。) 制限と説明: 関数は、ブロックシーケンスmとブロックサイズmを引数として使用する必要があります。 シンボルは、ゼロベースの整数として、または別の便利な形式で表されると想定できます。 あなたのプログラムは理論的に合理的な議論をとることができなければならず、実際には標準的なコンピューターで事例を計算できなければなりません(下記参照)。 組み込み関数およびライブラリは、1回の呼び出しでプロシージャの大部分を実行しない限り許可されます。つまり、Aからサイズmのすべてのブロックを抽出し、特定のブロックxの出現回数をカウントするか、エントロピーを計算します一連のp値から–これらを自分で行う必要があります。 テスト: [2, 3, 4, 1, 2, 3, 0, 0, 3, 2, 3, 0, 2, 2, 4, 4, 4, 1, 1, 1, 0, 4, 1, 2, 2, 4, 0, 1, 2, 3, …
12 code-golf 

1
Stack Exchangeサイト用のFanaticボットを作成する
今日の課題は、バッジをごまかすことです! Stack Exchangeサイトに接続し、ログインし、/ questionsページにアクセスし、質問にアクセスし、「関連」サイドバーにある他の9つの質問にアクセスするボットを構築します(「アクティビティ」、そして何かを標準化する必要があります)。 このボットは、ユーザーからの入力やアクションなしで、毎日1回このプロセスを実行する必要があります。実行したままにしておく必要があり、ユーザーがコンピューターに触れないようにする必要があります。また、連続した日数は増え続けます。サイトを「訪問」した後、「訪問」を印刷する必要があります。 ユーザーがStack Exchange提供のOpenIDを使用していると仮定します。 プログラムの入力は、サイトURL、SE OpenID電子メール、およびSE OpenIDパスワードです。例えば: /programming// doorknob@doorknob.doorknob password これらは自由に入力できます。 あなたのプログラムは最低でも機能しなければなりません: /programming// https://meta.stackoverflow.com/ /superuser// /codegolf// (それが普遍的であることを確認するためだけに。) これはcode-golfなので、バイト単位の最短コードが勝ちます!
12 code-golf 

2
ASCII-art論理ゲート図
方程式の積和形式の(拡張)ASCIIアートロジックゲートダイアグラムを作成するコードを作成するように挑戦します。 ゲートを表すには、次の表記法を使用します。 そして INPUT───|&& |&&───OUTPUT INPUT───|&& または INPUT───|OR |OR───OUTPUT INPUT───|OR 3つ以上の入力があるゲート INPUT───|OR |OR INPUT───|OR───OUTPUT |OR INPUT───|OR ない INPUT───│>o───OUTPUT キャラクターセット │はASCIIパイプ記号ではなく、ボックス描画文字であることに注意してください。─ │ ┌ ┐ └ ┘接続用などのボックス描画文字を使用します。 例 入力 A'*B'+B*C 出力 A────│>o────│&& │&&─────┐ B────│>o────│&& └│OR │OR─────A*B+B*C B───────────│&& ┌│OR │&&─────┘ C───────────│&& 勝者 勝者は5日間で最も多く投票した回答です

2
リバーシエンジンを実装する
このゴルフのあなたの仕事は、リバーシ(オセロ)のゲームの動きを取り、結果をユーザーに表示するプログラムを書くことです。 入力 範囲[0-7]から取得した数字の文字列。数値の各ペアは、最初にX座標、次にY座標を表します。その範囲にない文字は無視する必要があります。 出力 入力が終了したときに誰がリードしているかなど、ゲームの結果の視覚的表現。これはグラフィック出力またはキーストローク出力の場合がありますが、ゲームの視覚的なグリッドであり、黒、白、および空の個別の文字/グラフィックシンボルである必要があります。 また、コードはエラーメッセージを出力し、不正な移動(同じ正方形が複数回入力されるか、タイルが反転しない正方形)が入力されると停止します。 スキップは適切に処理する必要があります。スキップは、1つの色に正当な動きがない場合に発生し、それらのターンはスキップされ、他のプレイヤーがプレイします。 黒が常に最初になります。 例 23 ........ ........ ........ ..bbb... ...bw... ........ ........ ........ b 232425140504032627 ........ ........ ........ b.bbb... bbbww... b.b..... ..b..... ..b..... b 2324322513 ........ ........ ........ ..bbb... ..www... ........ ........ ........ e 23242555 ........ ........ ........ ..bbb... ..bbw... ..b..... ........ ........ e

9
分割して幸せを保ちましょう。征服の部分は誰が気にしますか?
まあ、2人の妻のためにギフトを購入するとき、私にも同じように大切に感じてほしいのですが、決まった予算で買い物をするのは難しいです。代わりに、私はたくさんのものを購入し、それらを可能な限り同じ価値を持つ2つのグループに分けます。それから私はチョコレートをたくさん買って残りを修正します。 しかし、コンピューターができる限りすべての苦労をしたくありません。そして、あなたもそうではありません。したがって、この問題を解決して、次に妻に贈り物を分ける必要があるときに、それが簡単であることを知ってください。 入力 1行目にN * 2が指定されている(N * 2)要素の1つの配列。 次の行の配列の要素。 出力 それぞれN要素の2つの配列:( 配列1の要素の合計)と(配列2の要素の合計)の差が可能な限り0に近い 例 入力 4 1 2 3 4 出力 1 4 2 3 diff=0 免責事項:私には妻が2人いません。しかし、気分が悪いときは、妻が2人いることを想像します。そして突然、私は自分が1人しかいないことに感謝し、幸せです。:D

7
フレーズの頭字語
仕事: たとえばdftba、頭字語を入力として使用するプログラムを作成し、頭字語が表す可能性のあるフレーズを生成します。wordlistを単語入力として使用できます。https://www.youtube.com/watch?v=oPUxnpIWt6Eに触発された 例: input: dftba output: don't forget to be awesome ルール: プログラムは同じ頭字語に対して毎回同じフレーズを生成することはできません。ランダム化が必要です 入力はすべて小文字になります いくつかの例を投稿する(入力と出力) すべての言語が受け入れられます それは人気コンテストなので、ほとんどの賛成票が勝ちます!

12
nカプレカル数を計算する
A カプレカ数は、 N桁の番号であり、Kは、そのときに最初のnまたはn-1の 2秒に追加される^ kの桁N N ^ 2の桁、結果はNです。 例: 9^2 = 81. 8+1 = 9. 45^2 = 2025. 20+25 = 45. 297^2 = 88,209. 88+209 = 297 Kaprekarシーケンスは1から始まります。 計算とすることは、第1出力するプログラムを書くNカプレカ数でnは空白と何もして分離しなければならない範囲であるが、範囲には限定されない、1〜100の各カプレカ数のを。 プログラムをチェックするために、より多くのKaprekar番号をここで見つけることができますが、このリソースは計算を支援するために使用することはできません。方法-すべての数値はプログラムで生成する必要があります。 最短のコードが優先されます。
12 code-golf 

11
n個の奇妙な数字を印刷する
奇妙な数とは、適切な約数の合計が数自体より大きく、適切な約数のサブセットがその数に加算されない数です。 例: 70は、その適切な除数(1、2、5、7、10、14、および35)の合計が70を超える74であり、これらの数値の合計が70にならないため、奇妙な数字です。 18は、適切な除数(1、2、3、4、6、9)の合計が25であり、18より大きいが、3、6、および9の合計が18であるため、奇妙な数字ではありません。 あなたのタスクは、std-inで任意の数nを入力し、計算してファイルに出力するか、改行区切りで最初のn個の奇妙な数字をstd-outする最も短いプログラムを書くことです。回答のハードコーディングは許可されていません(最初にこれを指定しなかったため申し訳ありません)。 他の例については、次のページを参照してください:http : //mathworld.wolfram.com/WeirdNumber.html
12 code-golf 

10
コンマで区切られた範囲のソートされたリストへの英数字の文字列
ソートされていない英数字の文字列が与えられた場合、例えば ABC321STPpJqZZr0 出力A「」文字範囲ので区切らリストは、(ケースを無視して重複を削除、ASCII値でソートすなわち大文字と数字のみ出力)は、たとえば、 0-3, A-C, J, P-T, Z ルール プログラムの長さは、通常どおり基本スコアです。 上記の例をプログラム内で初期化(ハードコード)する必要がありますが、プログラムの長さからその例の長さを割り引くことができます。たとえば、char* s="ABC321STPpJqZZr0";16文字を割り引くことができます。 ボーナス(+50バウンティ) これは今日の同僚が実際に直面した問題であり、Tcl 8.0.5(古いバージョンであり、最新のTclビルトインの多くを欠いている)で書く必要があるため、最短のTcl 8.0を書いた人に50ポイントを授与します.5ソリューション、Tcl 8.0.5に少なくとも2つの有効な提出がある場合。
12 code-golf  string 

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