タグ付けされた質問 「code-golf」

コードゴルフは、ソースコードの最小バイトで特定の問題を解決するための競争です。

8
シンプルな論理ゲート計算機
あなたがそれを受け入れることを選択した場合、あなたの使命は、以下の論理演算子のための単純な真理値評価子を構築することです: ---------------------------------------------------------------------------------- Logical Name | Gate Name | Symbol | Symbol Name | Truth Table ---------------------------------------------------------------------------------- Identity | is | | (none) | 10 Negation | not | ~ | tilde | 01 Conjunction | and | & | ampersand | 1000 Disjunction | or | | | pipe | …

3
Python文字列リテラルを解析する
課題は、Pythonが行うように文字列を解析し、文字列の内容を出力することです。 入力(コマンドライン引数またはstdin):文字列リテラル(例:"hello")(または複数のリテラル、以下の文字列リテラル連結を参照) 出力(stdout) :文字列の内容(例えばhello) 文字列を解析するためのルール: 文字列リテラルは'a'、一重引用符()、二重引用符("a")、三重単一引用符('''a''')、または三重二重引用符("""a""")の対応するペアで囲まれます。文字列を開いたタイプの引用符の最初の再発は、文字列を終了します。 バックスラッシュエスケープ: \'文字列内となり'、\"となり"と\\なり\。他のバックスラッシュエスケープを実装する必要はありません。エスケープシーケンスの一部ではないバックスラッシュは、バックスラッシュのままです。 文字列リテラルの連結:隣接する文字列リテラルの内容が連結されます。たとえば、に"hello" 'world'なりhelloworldます。 入力には、リテラルの一部ではないスペースが含まれている可能性があります。 リテラルの内外で、他の種類の空白をサポートする必要はありません。 追加のルール: eval、execおよび同様のものは、リテラルまたはその一部を解析することはできません。 入力は有効であると想定できます。 最大入力長は1023文字と想定できます。 例: "hello" ' world' -> hello world """\"""'\\\A""" -> """'\\A ( '''"""'''"""'''""" ) (括弧なし、ただしスペースあり)-> """''' 最短のコードが勝ちます。

9
フィボナッチサムとして数値を書き込む
フィボナッチ数列を次のように定義してみましょう F(1) = 1 F(2) = 2 F(n) = F(n - 2) + F(n - 1) したがって、無限シーケンスがあり1,2,3,5,8,13,ます...正の整数はフィボナッチ数列の合計として記述できることはよく知られています。唯一の注意点は、この合計が一意ではない可能性があることです。フィボナッチ数の合計として数を書く方法は常に少なくとも1つありますが、もっと多くの方法があるかもしれません。 あなたの課題は、stdinを使用して100万から100万までの正の整数を取り込み、入力に加算されるフィボナッチ数のすべての可能な合計をstdoutを使用して出力する完全なプログラムを作成することです。まとめると、フィボナッチ数列は繰り返さないでください1。これには、その数が含まれます。要約すると、1存在する場合、上記のシーケンスの私の定義では1回しか1出現しないため、1回だけ存在する必要があります。項のみの合計が有効であるため、入力数値がフィボナッチ数自体である場合、数値自体は有効な合計であり、出力する必要があります。複数の合計の場合、2つの合計の間には、それらを簡単に区別するための空白行が必要です。 ここにいくつかのサンプルがあります。 ./myfib 1 1 そのような合計は1つしかなく、期間も含まれているため、出力されるのはそれだけです。 ./myfib 2 2 繰り返します1+1ので、これは有効な合計ではないことに注意してください1。 ./myfib 3 1+2 3 2つの合計とその両方は、間に空白行を入れて印刷されます。 ./myfib 10 2+8 2+3+5 ./myfib 100 3+8+89 1+2+8+89 3+8+34+55 1+2+3+5+89 1+2+8+34+55 3+8+13+21+55 1+2+3+5+34+55 1+2+8+13+21+55 1+2+3+5+13+21+55 真のコードゴルフ。どの言語でも最短のコードが優先されます。いくつかのテストケース(上記で示したもの以外)をコードに投稿してください。引き分けの場合は、少なくとも2週間、おそらくそれ以上待ってから、賛成票が最も高いものを選びます。だからコミュニティはあなたが好きな解決策を自由に賛成投票してください。コードの賢さ/美しさは、誰が最初に投稿するかよりも重要です。 幸せなコーディング!

4
芝刈り機パターン
Google Code Jam 2013予選ラウンド問題Bから抜粋: アリスとボブは家の前にNメートルx Mメートルの長方形の形の芝生を置いています。毎年、彼らは芝生を興味深いパターンに切り取ろうとします。彼らは非常に時間がかかる剪断機で切断を行っていました。しかし、今では複数の設定が可能な新しい自動芝刈り機があり、試してみたいと思っています。 新しい芝刈り機には高さ設定があります。1〜100ミリメートルの任意の高さhに設定でき、高さhに到達するhより高いすべての芝生を刈り取ります。あなたは芝生の端のどこかで芝生に入ってそれを実行します。次に、芝刈り機は、進入した芝生の端に垂直に直線状に進み、幅1mの草を刈り取り、反対側の芝生から出るまで刈り取ります。芝刈り機の高さは、芝生の上にないときにのみ設定できます。 アリスとボブには、芝生の上に置くことができるさまざまなパターンの草があります。それらのそれぞれについて、彼らは彼らの新しい芝刈り機でこのパターンに草を切ることが可能であるかどうか知りたいです。各パターンは、芝生の各1m x 1mの正方形の芝生の高さを指定することによって記述されます。 芝生全体の芝生の高さは、最初は100mmです。 整数の高さの2D配列を取り、それに応じて芝生を切断できるかどうかを決定する関数を記述します。 Google Code Jamの100のテストケースを以下に示します。 最初の35ケースはパスするはずですが、残りはパスしません。 最短のコードが勝ちます。
9 code-golf 

5
任意の長さの3乗平方和語
ストリングに2回続けてサブストリングが含まれていない場合、ストリングはスクエアフリーです。 3文字のアルファベットを使用して、任意の長い正方形のない単語を作成することができます。 stdinから正の整数nを受け入れ、文字A、Bおよびを使用して長さnの平方自由語を出力するプログラムを記述しCます。 最短のコードが勝ちます。

1
ASP / Prolog / SATフローソルバーを作成する
Flow Freeは中毒性のあるAndroidゲームで、重複しないヘビを介して要素のペアを接続し、グリッド全体を埋める必要があります。説明については、ここを参照してください。 https://play.google.com/store/apps/details?id=com.bigduckgames.flow&hl=en いくつかのルールにすぎないASP(回答セットプログラミング)ソリューションがあり、同じソリューションをSATインスタンスのように簡潔に表現することはできないと思いますが、間違っていることが判明することに興味があります。 どの言語でも問題ありませんが、ある種のソルバーを実行せずに簡潔に実行できるとは思えないため、ASP / Prolog / SATというラベルを付けました。 勝者は最も少ないキャラクターです。 問題は述語を使用して定義されていると想定できます。 v(V). % A vertex a(V,W). % V and W are adjacent c(C). % A color s(V,C). % V is an endpoint of color C さらに、入力は a(W,V) :- a(V,W) % Adjacencies are bidirectional 2{s(V,C) : v(V)}2 :- c(C). % Every …
9 code-golf 

14
継続分数を表示
課題は、分数を継続分数の形に変換することです。 入力:分数は、これに限定されない(を含む)任意の形式で入力できます 文字列:「7/16」 リスト:{7、16}、(7、16)、[7、16] 単純な順序のペア:7 16 関数:f [7,16] 出力:分子を分母から分離する水平の分数バーを使用した2Dの継続分数。分子が1の継続分数のみが有効です。フォントのサイズを奥行きに応じて変える必要はありません。先行ゼロ(適切な分数の場合)はオプションです。 深度:コードは少なくとも8レベルの深度を表示できる必要があります。 受賞基準:最短のコードが勝ちます。入力と出力を示すいくつかのテストケースを含める必要があります。 テスト例(入力の後に出力) 5/4 5/3 5/7 9/16 89/150

3
キラー数独ソルバーを構築する
通常の数独は難しいと思っていましたが、今度はキラー数独を試してください! キラー数独のゲームでは、あなたはまったく番号を与えられていません。代わりに、特定の数になると言われる地域が与えられます。Wikipediaの次の例を考えてみます。 そしてその解決策: 作成するプログラムは、リージョンを表す81文字のシーケンスとそれに続く一連の数字で構成される形式になります。次に、シーケンスの各数値は、「A」、「B」などから始まる各文字領域の数値の合計を表します。 次に、解を表す81桁のシーケンスを出力します。 たとえば、上のパズルの例には次の入力があります。 AABBBCDEFGGHHCCDEFGGIICJKKFLMMINJKOFLPPQNJOORSPTQNUVVRSTTQWUUXXSYZWWaaXXSYZWbbbcc 3 15 22 4 16 15 25 17 9 8 20 6 14 17 17 13 20 12 27 6 20 6 10 14 8 16 15 13 17 結果の出力は次のようになります。 215647398368952174794381652586274931142593867973816425821739546659428713437165289 入力は有効であり、領域は常にA、B、...、Y、Z、a、b、...、zの順に表示されると想定できます。 (動作する最も短いコードが優先されます。)

5
リストのパーティション
この質問の答えは長すぎます あなたの課題は、最小の文字数でパーティション関数を書くことです。 入力例 ['a', 'b', 'c'] 出力例 [(('a'),('b'),('c')), (('a', 'b'), ('c')), (('a', 'c'), ('b')), (('b', 'c'), ('a')), (('a', 'b', 'c'))] 入力は、リスト/配列/セット/文字列などにすることができます。関数が処理するのが最も簡単なものであれば何でもかまいません。 構造が明確である限り、自分に合うように出力形式を選択することもできます。 関数は、入力の少なくとも6項目で機能する必要があります

2
文脈自由文法でデータを圧縮する
人間のテキストやソースコードなど、ある種のデータを直線的な文法で圧縮することができます。基本的には、言語が1語のみの文法、つまり非圧縮データを作成します。このタスクでは、このデータ圧縮方法を実装するプログラムを作成する必要があります。 入力 入力は65535バイト以下の文字列です。入力が正規表現[!-~]+(つまり、空白を除いた少なくとも1つの印刷可能なASCII文字)に一致することが保証されています。 入力例は abcabcbcbcabcacacabcabab 出力 出力は、正確に1つの単語(入力)を記述する文法を形成する一連のルールです。各非終端記号は、9より大きい10進数で表されます。開始記号は記号番号10です。入力例に対応する出力例を以下に示します。その構文については、以下でさらに説明します。 10=11 11 12 12 11 13 13 11 14 14 11=a 12 12=b c 13=a c 14=a b 各ルールには<nonterminal>=<symbol> <symbol> ...、右側に任意の空白で区切られた数の記号が付いた形式があります。以下の制限に従い、入力文字列を正確に導出する各出力は有効です。 制限事項 人々が奇妙なことをするのを止めるために、いくつかの制限が行われています: 各非終端記号は、ルールの右側に少なくとも2回出現する必要があります。たとえば、abcabcルール12は1回しか出現しないため、次の入力の文法は無効です。 10=12 11=a b c 12=11 11 2つの隣接するシンボルのシーケンスは、重複しない限り、すべてのルールのすべての右側に複数回出現することはできません。たとえばabcabcbc、シーケンスbcが2回出現するため、次の入力の文法は無効です。 10=11 11 b c 11=a b c 有効な文法は次のとおりです。 10=11 11 12 11=a …

21
繰り返しのある順序付けられた組み合わせを生成する
異なる文字の文字列と番号nが与えられた場合、それらの文字を使用して、長さが1からnまでの繰り返しのすべての順序付けられた組み合わせを生成します。 それを定義する別の方法は、指定された文字を文字数のベース(基数)の「カスタム」数字として見ることです。その後、プログラムは、そのベースに1からn桁のすべての「数字」を生成する必要があります。 「ゼロ」も含まれています。 組み合わせは、長さ(最初に1文字、次に2など)の順に並べる必要がありますが、それ以外は任意の順序にすることができます。入力と出力を処理する最も便利な方法を選択できます。最短のコードが勝ちます。 例: ab, 3-> a,b,aa,ab,ba,bb,aaa,aab,aba,baa,abb,bab,bba,bbb 0123456789, 2->0,1,2,3,4,5,6,7,8,9,00,01,...,09,10,11,...,99

9
相関係数を計算する
イベントXとYの一連の数値を指定して、ピアソンの相関係数を計算します。各イベントの確率は等しいため、期待値は、各シリーズを合計し、試行回数で割ることによって計算できます。 入力 1 6.86 2 5.92 3 6.08 4 8.34 5 8.7 6 8.16 7 8.22 8 7.68 9 12.04 10 8.6 11 10.96 出力 0.769 最短のコードが勝ちます。入力はstdinまたはargを使用できます。出力は標準出力になります。 編集:ソリューションの多様性を高めるために、組み込み関数(つまり、計算された期待値、分散、偏差など)を許可しないでください。ただし、ビルトインを使用するタスク(展示用)に適した言語を自由にデモンストレーションしてください。 Mathematicaへの入力に関するDavidのアイデアに基づいています(組み込みの平均値を使用した86文字) m=Mean;x=d[[All,1]];y=d[[All,2]];(m@(x*y)-m@x*m@y)/Sqrt[(m@(x^2)-m@x^2)(m@(y^2)-m@y^2)] m = Mean; x = d[[All,1]]; y = d[[All,2]]; (m@(x*y) - m@x*m@y)/((m@(x^2) - m@x^2)(m@(y^2) - m@y^2))^.5 自分の平均値(101文字)を使用した幅木 m=Total[#]/Length[#]&;x=d[[All,1]];y=d[[All,2]];(m@(x*y)-m@x*m@y)/((m@(x^2)-m@x^2)(m@(y^2)-m@y^2))^.5 m = …

7
ランダム入力を使用してシャッフルされたデッキを出力します
入出力: 入力:stdinから取得した、一様にランダムで無限に長い「0」と「1」の文字列。文字列は、疑似ランダムではなく、真にランダムであると想定されます。各文字が「0」または「1」に等しくなる可能性が高いという点で均一です。 気をつけて!入力は無限に長いため、Pythonでraw_input()のような関数を使用してすべてをメモリに格納することはできません。私が間違っていなければ、golfscriptは実行前に入力全体をスタックにプッシュするため、無限入力で失敗します。 出力:ジョーカーのない、均一にランダムにシャッフルされた標準デッキ。すべての順序付けが等しく可能であるという点で均一です。 出力の各カードは、ランク、A、2-9、T、J、Q、またはKと、それに合わせて、c、d、h、またはsを連結したものです。たとえば、スペードの10はTs デッキのカードはスペースで区切る必要があります。 組み込みのランダムライブラリまたは関数は、真にランダムではなく、疑似ランダムであるため使用できません。 入力例 次のpythonスクリプトを使用して、入力をプログラムにパイプすることができます。 import sys, random try: while True: sys.stdout.write(str(random.randint(0,1))) except IOError: pass スクリプトをrand.pyとして保存する場合は、プログラムをテストしてください python rand.py | your_program python 3では期待どおりに実行されますが、python 2.7ではプログラムの出力後にエラーメッセージが表示されますが、すべての処理が完了した後にのみ表示されるため、エラーメッセージは無視してください。 出力例: 並べ替えられた順序にシャッフルされた場合にデッキを印刷する方法は次のとおりです。 Ac 2c 3c 4c 5c 6c 7c 8c 9c Tc Jc Qc Kc Ad 2d 3d 4d 5d 6d 7d 8d …

4
フリードマン数を生成する
フリードマン数は、すべてのそれの桁に- (、/、*、+、^)基本的な数学演算を適用することで表現できる数です。操作は個々の数字に適用する必要はありませんが、すべての数字が関係している必要があります。つまり、121 = 11 ^ 2->すべての数字が関係しますが、1と1が一緒になって11になります。 括弧の使用は許可されていますが、自明な解決策x= (x)は有効な解決策ではありません。また、無効ですx= +x。 例 25 = 5 ^ 2 121 = 11 ^ 2 343 =(3 + 4)^ 3 2048 =(8 ^ 4)/ 2 + 0 正の2つの整数を取り、その範囲内のフリードマン数の数(両端を含む)を出力するプログラムを記述し、式を含む数を後続の行に出力します。 入力- n m | n, m integers, n>=0, m>n 出力- count | number of Friedman numbers in …
9 code-golf 

3
一方向システムを通る最短ルート
私の出身地であるリルには、一方通行の交通システムがあり、目的地からできるだけ離れるように設計されているようです。あなたがそれを試みることを選択した場合のあなたの仕事は、そのような交通システムを通る最短ルートを与えるプログラムを作成することです。 入力 入力はになりSTDIN、次のように、開始点と終了点のリスト、それに続く空白行、それに続くクエリのリストになります。 A B B A B C C D D C A D C A B A 各道路は指定された方向にしか移動できないため、上記の例では、道路A-Bは双方向の道路ですが、B-CはBからCへの一方通行です。CからBへの移動禁止されています。 始点と終点はすべて1つの大文字で表されます。 出力 出力は、受け取ったクエリごとに、指定された開始点から指定された終了点までの最短ルート(訪問したポイントの数で測定)である必要があります。そのようなルートが存在しない場合は、空白行を出力します。複数の最短ルートが存在する場合は、すべての最短ルートを辞書順にソートするときに最初のルートを出力します。 上記の例の場合、出力は次のようになります。 A B C D B A テストスクリプト 前と同じように、JoeyとVenteroによって書かれたスクリプトに基づいて、このタスクのテストを提供しています:- バッシュ パワーシェル 上記のスクリプトを使用できない人のためのテストと予想される出力 プレーンテキスト 使用法: ./test [your program and its arguments] 報酬 仕様に適合し、すべてのテストに合格したゴルフでの試みが明らかにあったすべての回答は、私の賛成票を獲得します。2012年1月26日までの最も短い有効な回答が受け入れられます。

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