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

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

10
正弦波テキスト
目標:入力文字列を正弦波形状で出力するプログラムまたは関数を作成します。 ASCII正弦波 これが正弦波の1つの期間です。 ....... ... ... .. .. . . . . . . . . . . . . . . . .. .. ... ... ....... 各列に正確に1つのドットがあることに注意してください。 入力文字列の各文字は、上記の形状のドットを左から右に置き換えます。 入力のスペースは、ドットの代わりに通常の文字のように出力する必要があります。 開始文字は、上の図の左端のドットに対応しています。 これは1周期のみで、入力は上記のドット数よりも長くなる場合があります。 入力 入力は、ASCII 10進数32(スペース)とASCII 10進数126(ティルド〜)の間の文字のみを含むASCII文字列です。 入力は常に1行のみです(改行なし)。 入力は、STDIN、関数パラメーター、コマンドライン引数、または同様のものを介して取得できます。 出力 出力は、指定されたテストケースとまったく同じように印刷する必要があります。 行の末尾のスペースは、それらの末尾のスペースを含む行の長さが最長行(最後の文字がある行)の長さを超えない限り許可されます。 先頭/末尾の行は許可されません。 テストケース 入力: ................................................. 出力: ....... ... ... …

30
「tac」の実装:ファイルの行を逆順に印刷します
子猫の質問からU&Lでsed魔法についてのこの質問を見るまで、実装はtacどうですか? 目的 ファイル内の行を反転して印刷するプログラムを実装します。 入力 名前として、または標準入力を介して提供されるファイル 出力 行を反転し、標準出力にします。 得点 ソースコードのバイト。
30 code-golf  string 

15
マージンが狭すぎる
1637年ごろ、ピエール・ド・フェルマーは算数のコピーの余白に次のように書いた。 It is impossible to separate a cube into two cubes, or a fourth power into two fourth powers, or in general, any power higher than the second, into two like powers. I have discovered a truly marvelous proof of this, which this margin is too narrow to contain. 残念ながら、証拠を含めるにはマージンがまだ狭すぎます。今日は、任意の入力の証明を確認する簡単なプログラムを余白に書き込みます。 …
30 code-golf  number 

29
すべての行のクイン
あなたの目標は、各行の後に新しい行を付けて、無期限に印刷するプログラムを作成することです。したがって、プログラムが1行の場合、出力のすべての行で繰り返されます。 例 プログラム: A 出力: A A A ... ルール スニペットや関数ではなく、完全なプログラムでなければなりません。 プログラムは、スタックオーバーフローまたは再帰制限エラーなしで永久にループする必要があります。 出力はstdoutまたは最も近い代替です。 プログラム入力は受け入れられません。 プログラムのファイルを開く、外部リソースにアクセスするなど、標準的な抜け穴は許可されません。空のプログラムは標準の抜け穴として許可されていません。 プログラムのコードが末尾の改行で終わる場合、これはクイン間の必要な改行としてカウントされず、別の改行を印刷する必要があります。 codegolf-最短コードが勝ちます!
30 code-golf  quine 

30
2つの文字列の最長共通プレフィックス
入力として2つの文字列を受け取り、最長の共通プレフィックスを返すプログラムを作成します。これはcode-golfであるため、バイト数が最も少ない答えが優先されます。 Test Case 1: "global" , "glossary" "glo" Test Case 2: "department" , "depart" "depart" Test Case 3: "glove", "dove" ""
30 code-golf  string 

8
ビートルズの歌と六角形
2つの三角形(つまり、ピラミッド)形のプログラムを作成します。 最初のものは、3文字の最小ベース幅を持つ上向きのテキスト三角形でなければなりません。そのため、次のような構造になります X XXX または X XXX XXXXX または X XXX XXXXX XXXXXXX 以上。のそれぞれは、X実際のコードの文字に置き換えられます。実際のコードは、行末記号以外のものである可能性があります(したがって、Xがスペースになる可能性があります)。すべてのをX置き換える必要があり、三角形の形状を形成するのに役立つスペースと改行はそのままである必要があります。 2番目のプログラムは、三角形が下を向いていることを除いて、最初のプログラムと同じサイズと形状でなければなりません。 最初のプログラムが次のように見える場合 X XXX XXXXX あなたの2番目のプログラムは次のようになります yyyyy yyy y それぞれyが実際のコードを入力する必要がある文字です(コードとは異なる可能性がありますX)。ここでもスペースと改行は同じでなければなりません。 あなたの仕事は、これらのプログラムが、入力を一切受け取らずに、個別のビートルズの曲のタイトルを(標準出力または最も近い代替に)出力するように書くことです。このウィキペディアの記事は、ビートルズの公式曲リストとして機能します。出力は、リストされているとおりのタイトルの1つである必要がありますI Want You (She's So Heavy)。 ただし、奇妙な三角形プログラムの要件がある場合でも、これは非常に簡単です。そこで、最初の2つから別のプログラムを作成し、さらに別の曲のタイトルを出力する必要があります。 2つの三角形プログラムのそれぞれの3つのコピーを組み合わせることにより、六角形の3番目のプログラムを作成できます。 最初のプログラムのベース幅が3だった場合、次のようになります。 XyyyX XXXyXXX yyyXyyy yXXXy ベース幅が5の場合、次のようになります。 XyyyyyX XXXyyyXXX XXXXXyXXXXX yyyyyXyyyyy yyyXXXyyy yXXXXXy このプログラム(他のスペースやスペースを使用して実行する場合)は、最初の2つのプログラムと同様に、ビートルズの別の曲のタイトルを出力する必要があります。また: 3つのプログラムは、異なる曲のタイトルを出力する必要があります。 長さが8文字以上の曲のタイトルのみが許可されます。 あなただけのいずれかを選択することができRevolution、Revolution 1そしてRevolution 9タイトルがとても似ているので。 …

9
一意に分離されたピクセル
以下のためにNによってN画像、全く分離距離が複数回存在しないように、ピクセルのセットを見つけます。つまり、2つのピクセルが距離dで区切られている場合、それらは正確にdで区切られている唯一の2つのピクセルです(ユークリッド距離を使用)。dは整数である必要はないことに注意してください。 課題は、他の誰よりも大きなセットを見つけることです。 仕様 入力は必要ありません-このコンテストのNは619に修正されます。 (人々は尋ね続けているので、番号619について特別なことは何もありません。最適な解決策を考えにくいほど大きく、Stack Exchangeが自動的に縮小することなくN x Nの画像を表示できるほど小さいように選択されました。最大630 x 630のフルサイズを表示し、それを超えない最大の素数で行くことにしました。) 出力は、スペースで区切られた整数のリストです。 出力の各整数は、ピクセルの1つを表し、0から英語の読み取り順序で番号が付けられます。たとえば、N = 3の場合、位置は次の順序で番号が付けられます。 0 1 2 3 4 5 6 7 8 必要に応じて、実行中に進行状況情報を出力できますが、最終的なスコアリング出力が簡単に入手できる限りです。STDOUTまたはファイル、または下のStack Snippet Judgeに貼り付けるのに最も簡単なものに出力できます。 例 N = 3 選択した座標: (0,0) (1,0) (2,1) 出力: 0 1 5 勝ち スコアは、出力内の場所の数です。最も高いスコアを持つ有効な回答のうち、そのスコアで最も早く投稿を出力します。 コードは確定的である必要はありません。最高の出力を投稿できます。 研究の関連分野 (ゴロムのリンクについてはAbulafiaに感謝します) これらはどちらもこの問題と同じではありませんが、どちらも概念が似ており、これにアプローチする方法についてのアイデアを提供します。 ゴロム定規:1次元の場合。 ゴロム長方形:ゴロム定規の2次元拡張。Costas配列として知られるNxN(正方形)ケースのバリアントは、すべてのNについて解かれます。 この質問に必要なポイントは、ゴロム長方形と同じ要件の対象ではないことに注意してください。ゴロム長方形は、各点から互いへのベクトルが一意であることを要求することにより、1次元のケースから拡張されます。これは、水平方向に2の距離で分離された2つのポイントと、垂直方向に2の距離で分離された2つのポイントが存在できることを意味します。 この質問の場合、一意でなければならないのはスカラー距離です。したがって、水平と垂直の2の分離はありません。この質問に対するすべての解はゴロム長方形になりますが、すべてのゴロム長方形がこの質問。 上限 Dennisはチャットで487がスコアの上限であることを有益に指摘し、証拠を示しました。 …

6
スラッシュを使用してヒルベルト曲線を描く
ヒルベルト曲線はとして表すことができる空間充填フラクタルであるLindenmayerシステムの連続した世代と、このようになります。 おかげhttp://www.texample.net/tikz/examples/hilbert-curve/画像のため。 ゴール stdinから正の整数nを取り、スラッシュ、バックスラッシュ、スペース、改行のみを使用してn次のヒルベルト曲線をstdoutに描画する、可能な最短のプログラム(バイト単位)を記述します。 たとえば、入力が1出力である場合、 \ \/ 入力が2出力の場合 / \/\ /\ \ / /\/ \ \ \/ 入力が3出力の場合 \ /\/ / /\ \/\ \ \ /\ / / / / / \/ \/\ \ \/\ /\ \ \/ / / / /\/ /\/ / \ \ \ \/\ \/ \/\ …

30
1が複数回実行される数値
仕事 バイナリ表現に1、少なくとも1つで区切られた2つ以上の実行が含まれるように、数値のセットを見つけます0。 たとえば、4ビット長の数値の場合: 0 0000 (no ones) 1 0001 (only one run) 2 0010 (only one run) 3 0011 (only one run) 4 0100 (only one run) 5 0101 Valid 6 0110 (only one run) 7 0111 (only one run) 8 1000 (only one run) 9 1001 Valid 10 1010 …
30 code-golf  binary 

26
等級への整数マーク
正の整数(0以上、最大値なし)が与えられた場合、次の規則に従って等級に変換します。 A = 100+ B = 90 - 99 C = 80 - 89 D = 70 - 79 E = 60 - 69 F = 59 and less. これは少し退屈だと感じたので、グレードが+7,8または9の-場合はa 、0,1または2の場合はaにしてください。FおよびAの場合は無視してください。 例: 入力: 65 出力: E テストケース: 0 -> F 20 -> F 65 -> E 72 -> D- 75 …
30 code-golf 

12
公式Rubyインスペクター
以下は、単純なASCIIアートルビーです。 ___ /\_/\ /_/ \_\ \ \_/ / \/_\/ ASCII Gemstone Corporationの宝石商としての仕事は、新しく取得したルビーを検査し、発見した欠陥についてメモを残すことです。 幸いなことに、可能な欠陥は12種類のみであり、サプライヤはルビーに複数の欠陥がないことを保証しています。 12の欠陥12内の一つの置換に対応する_、/または\空白文字(とルビの文字)。ルビーの外周に欠陥はありません。 欠陥は、どの内部キャラクターがその場所にスペースを持っているかに応じて番号が付けられます。 したがって、欠陥1のルビーは次のようになります。 ___ /\_/\ /_/ _\ \ \_/ / \/_\/ 欠陥11のルビーは次のようになります。 ___ /\_/\ /_/ \_\ \ \_/ / \ _\/ 他のすべての欠陥についても同じ考えです。 チャレンジ 欠陥の可能性のある単一のルビーの文字列を取り込むプログラムまたは関数を作成します。欠陥番号を印刷するか返送してください。欠陥がない場合、欠陥番号は0です。 テキストファイル、標準入力、または文字列関数の引数から入力を取得します。欠陥番号を返すか、標準出力に出力します。 あなたはルビーの末尾に改行があると仮定するかもしれません。後続のスペースや先頭の改行があるとは思わないかもしれません。 バイト単位の最短コードが優先されます。(便利なバイトカウンター。) テストケース ルビーの正確な13種類と、それに続く予想される出力: ___ /\_/\ /_/ \_\ \ \_/ / \/_\/ …

11
印刷、増分、減分、エイリアス-Prindealの解釈
Prindeal(顕著PRIN-ディー-ALは)新しいある難解:4つのつのみコマンド有するプログラミング言語PR INTを、で crement、デ crement、そしてら IAS。4つのコマンドを巧みに組み合わせることにより、Prindealで複雑な数学演算を最小限に抑えることができます。 このゴルフのチャレンジの課題は、Prindealコードを実行できる最短のプログラムを作成することです。 仕様は長いですが、できる限り明確にしようとしました。Prindealを学習するための努力をすれば、非常にエレガントであることがわかります。 Prindealの解釈 前処理 Prindealプログラムを解釈する前に、これらのことを次の順序で削除する必要があります。 #記号の後にある行の最後までのすべてと、#それ自体。(これらはコメントです。) 任意の行の末尾の空白。 完全に空の行。 たとえば、Prindealプログラム p cat #The next line has 7 trailing spaces. p dog #p mouse 前処理されます p cat p dog ここからは、この前処理ステップが完了したと仮定します。 変数 変数の使用方法を示す前に、変数をすばやく定義する必要があります。 変数(および変数への参照)は、Prindealコマンドの引数に渡されるものです。変数は常にグローバルであるため、変数の変更は、それらがどこで発生しても、どこにでも反映されます。 各変数は、負でない任意精度の整数(0、1、2、3、...)を保持します。変数は事前に初期化する必要はありません-変数は、最初に使用または呼び出されるときに常に値0で始まります。 変数名は、数字[a-zA-Z_][0-9a-zA-Z_]*と正規表現で始まらない、英数字とアンダースコアの空でない文字列です。これらは大文字と小文字が区別されるためspiny_lumpsuck3r、Spiny_lumpsuck3r異なる変数です。 実行 Prindealは命令型プログラミング言語です。Prindealプログラムが実行されると、ステートメントが上から下の順に実行され、プログラムが終了します。 Prindealプログラムのインデントされていない行はすべて、引数を取る場合と受け取らない場合がある単一のコマンドの実行を伴うステートメントです。 インデントされた行は、エイリアスコマンドの後にのみ発生します。具体的には、すべてのエイリアスコマンドの後に、単一のスペースでインデントされた正確に3行が発生し 、その一部と見なされます。したがって、別名ステートメントは実際には4行の長さです。(1行にすることもできますが、4行は読みやすいだけです。) 非エイリアスステートメント aliasを除き、Prindealプログラムのすべてのステートメントの形式は次のとおりです。 [command name] [argument 1] [argument …

24
スニペットのN個のコピーを結合して、N ^ 2文字を生成します
チャレンジ コードのN個のコピーを連結すると、出力される文字数がN 2になるように、可能な限り短いコードスニペットを記述します。Nは正の整数です。 たとえば、スニペットがの場合、soln();running soln();はちょうど1文字soln();soln();を印刷し、running はちょうど4文字soln();soln();soln();を印刷し、running はちょうど9文字を印刷します。 文字の総数が正しい限り、任意の文字が出力に含まれることがあります。OS間の混乱を避けるため、\r\n改行は1文字としてカウントされます。 プログラムは、独自のソースを読み取ったり、ファイルサイズを読み取ったり、他のそのような抜け穴を使用したりすることはできません。これを厳しい馬の挑戦のように扱ってください。 出力は、stdoutまたはファイルまたは同様の代替物に送られます。入力はありません。 コード内のコメントは問題なく、実行中に終了します。 任意の文字がプログラムに含まれている可能性があります。バイト単位の最短提出が勝ちです。

3
鉄道線路を構築し、政府をごまかす
あなたは、19世紀のアメリカの鉄道起業家です。列車は、大量の資材を陸路で輸送する最も効率的な手段であるため、人気が高まっています。東海岸から西の最近植民地化された土地を通る鉄道線路に対する国家的なニーズがあります。 このニーズに対応するために、米国政府は鉄道を助成するために税金を徴収する予定です。彼らは敷設された線路のマイルごとにあなたの鉄道会社にお金を払うことを約束しました。丘陵地や山岳地帯にトラックを敷設することは、平らな土地にトラックを敷設するよりも高価なので、彼らはそれに応じて与える量を調整します。つまり、政府は支払います 平らな土地に敷設されたトラック1マイルあたり5,000ドル 丘陵地に敷設された1マイルあたり12,500ドル 山に敷設された1マイルあたり2万ドル。 もちろん、この計画は、トラックを敷設するのに実際にかかる費用を正確に反映していません。 いくつかの地図製作者を雇って、標高を分析するためのトラックを敷設する地域のレリーフマップを描画しました。そのようなマップの1つを次に示します。 S12321 121234 348E96 各数字は1平方マイルの土地を表します。Sは開始点、E終了点です。各数値は、その地域の標高変化の強度を表します。 1〜3番の土地は平坦な土地を構成します。 4〜6番の土地は丘陵地を構成しています。 7-9番の土地は山脈を構成します。 長年の鉄道線路の構築経験を通じて、線路構築のコスト(ドル単位)は次の式を満たしていると評価されました。 Cost_Per_Mile = 5000 + (1500 * (Elevation_Rating - 1)) つまり、特定の標高勾配に基づいて構築すると、政府が提供するよりも多くのお金が必要になります。場合によっては利益があり、場合によっては損益分岐点になります。 たとえば、標高勾配が3の1マイルのトラックの建設費用は8,000ドルですが、支払われるのは5,000ドルだけなので、3000ドルを失います。対照的に、標高勾配7で1マイルのトラックを構築すると14,000ドルの費用がかかりますが、そのために20,000ドルが支払われ、6,000ドルの利益が得られます。 次に、マップの例と2つの異なる可能なパスを示します。 S29 S#9 S## 134 1#4 1## 28E 2#E 2#E 最初のトラックの建設には30,000ドルかかりますが、政府はそれに対して30,000ドルを支払います。このトラックから利益を得ることはありません。 一方、2つ目のビルドには56,500ドルかかりますが、62,500ドルが支払われます。このトラックから6,000ドルの利益を得ます。 あなたの目標:レリーフマップが与えられたら、最初から最後まで最も収益性の高い(または単に最も安価な)パスを見つけます。複数のパスが結び付けられている場合、それらのいずれかが許容可能なソリューションです。 プログラムの詳細 数値の長方形マップと1つの開始点と終了点で区切られたテキスト入力が与えられます。各数値は1から9までの整数になります。それ以外の理由で、必要に応じて入力を提供できます。 出力は入力と同じ形式である必要があり、トラックが構築された番号はハッシュ(#)に置き換えられます。気まぐれな政治家によって課せられたarbitrary意的な規制のため、トラックは水平方向または垂直方向にしか移動できません。つまり、バックトラックしたり、斜めに行くことはできません。 プログラムは、最大6行6列のマップの妥当な時間(10分未満)で解決できる必要があります。 これはコードゴルフチャレンジなので、最短のプログラムが勝ちます。 (ゴルフではない)実装例があります。 サンプルI / O S12321 121234 …

19
簡単に入力可能な単語
この競争は終わりました。 勝者は22文字のCJamで、TwiNightの回答を1文字で破ります。おめでとうデニス! 尊敬すべき言及はFalkoにあり、Falkoは無料の輸入に夢中になりました。 。 少し前に、ノキア3310を使って現代のスマートフォンを打ち抜く方法を知りたかったのですが、いくつかの答えは本当に良かったのですが、それでも我慢できませんでした!たぶん、私は別のアプローチを取り、入力するのが面倒な言葉を書かないでください。 標準レイアウトを前提として、電話キーボードの同じボタンに2つの連続した文字がない場合、簡単に入力可能なテキストを呼び出します。 あなたのタスク あなたのタスクはs、stdin /から文字列をパラメーターとして受け取り、s簡単に入力できる場合は真理値を返し、そうでない場合は偽の値を返すプログラム/関数を作成することです。入力は小文字とスペースのみで構成され、空でないことが保証されます! 得点 これはcodegolfなので、文字数が最も少なくなります。 import文はあなたが使用したいと思っていたそうすれば、あなたの最終的なスコアにカウントされませんstd::set_symmetric_difference、liftM4またはitertools.combinationsあなたのコードでは、今の時間です! -3は、文字0以外のすべてがボタン0にあると仮定して、ソースコードを簡単に入力できる場合です。 テストケース コードが意図したとおりに機能しているかどうかを確認するためのいくつかのテストケースを次に示します。 "x" -> True "aardvark" -> False "ardvark" -> True "flonk" -> False "im codegolfing all day long" -> False "i indulge in minimizing bytecount" -> True "havent heard from you in a long time" -> …
30 code-golf 

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