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

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

6
2D不等式
目的 数字のグリッドが与えられたら、不等式を埋めます。 仮定 グリッドの列と行の数は同じです。 グリッドの最大サイズは12x12です。 グリッドは、0〜9の整数のみで構成されます。 出力には末尾の改行が含まれる場合があります。 入力は、スペースと改行を含め、以下に正確に記述されています。 入力例 4 2 3 1 6 2 3 1 6 9 2 1 0 2 1 6 出力例 4>2<3>1 ^ " " " 6>2<3>1 " ^ v " 6<9>2>1 v v v ^ 0<2>1<6 入力例(2) 1 2 3 4 5 5 4 …
29 code-golf 

3
IT'S CAPS LOCK DAY
10月22日は国際キャップロックデーです!残念ながら、一部のプレイヤーは、Almighty Caps Lockの栄光を認識しません。彼らは「不快な」または「叫ぶような」またはなんらかのナンセンスだと言う。これらの明白な非言語的および不満の申し立てに準拠するために、人々を非難させるために、「わかりやすい」または「合理的な」テキストに通常のテキストを変換するプログラムを書いてください。 説明 ソリューションの入力と出力は、両方とも印刷可能なASCII文字のみを含む文字列になります。 入力文字列には、ゼロ以上のcaps lock runが含まれます。キャップは、実行ロック(略しまたはCLR)を以下のように定義されます。 CLRには、単語の最初の文字を除きa-z、小文字()を含めることはできません。 言葉は、この課題の目的のために、非空間のシーケンスです。だから、PPCG、correcthorsebatterystaple、とjkl#@_>00()@#__f-023\f[全く考慮されている単語の。 CLRには、少なくとも1つのスペースが含まれている必要があります。したがって、少なくとも2つの単語である必要があります。 CLRの各単語には、少なくとも2文字(A-Za-z)が含まれている必要があります。 これは、CLRに含まれていない可能性のある周囲の文字なしで、単独で取得されたCLRを指すことに注意してください。たとえば、文字列自体には2文字未満の単語 s があるため、はCLR ではありません。foO BarO B CLRは「貪欲に」解析する必要があります。つまり、可能な限り最も長いCLRを常に見つける必要があります。 入力文字列内のすべてのCLRを特定したら、CLR内のすべての文字の大文字と小文字を入れ替えて、結果の文字列を出力します。 テストケース 最初の行は入力で、2行目は出力です。入力の太字部分は、CLRと見なされる部分文字列です。 CAPS LOCK IS THE BEST! caps lock is the best! I really LOVE pROGRAMMING pUZZLES AND cOde Golf! I really love Programming Puzzles and Code Golf! This is …
29 code-golf 

12
どれくらいの水が残っていますか?
ここカリフォルニアでは干ばつになっているので、できるだけ多くの水を節約できるように、どれだけの水を残したかを知る必要があります。 水の供給は限られているため、コードはできるだけ短くする必要があります。 例 | | | | |~~~| |___| Output: 0.5 |~~~~~| | | | | |_____| Output: 1 | | |__| Output: 0 (or bonus) 仕様 入力は、すべて|_ ~と改行のみで構成されます。以上のものはすべて~空気と見なされます。_、下のスペース~、および~それ自体は水と見なされます。残された水の割合はによってコンピューターwater / (air + water)です。出力は、小数点以下4桁まで正確である必要があります(パーセントボーナスを求めない限り)。入力は常に長方形になります。ある~場合は、1行のみになります。必要に応じて、入力にオプションで末尾の改行を含めることもできます。 ボーナス 両方のボーナスに行くと、-15%ボーナスが-35ボーナスの前に適用されます -35バイトのボーナス:出力が0の場合、コードが0ではなく「この干ばつヤギ」を印刷すると -15%ボーナス:パーセントを出力した場合。 これを行うには、小数点以下を2桁左にシフトし、先行ゼロを削除し%て、末尾にa を追加します。末尾のゼロ(最大2)は、値に影響を与えない限り許可されます。0.5->次のいずれか:50.00% 50% 50.0%
29 code-golf 

20
この挑戦はセントを作る
私は知っている、タイトルはあなたをひび割れます 出金金額を考えると、コインの最小数がその金額を構成します 例 0.1 1 dime 0.01 1 penny 0.28 1 quarter 3 penny 0.56 2 quarter 1 nickel 1 penny 1.43 5 quarter 1 dime 1 nickel 3 penny スペック 1ドル100セント。 各タイプのコインの値は次のとおりです。 penny 1セント nickel 5セント dime 10セント quarter 25セント このタスクを単純化するビルトインは許可されていません。 I / O 入力は、合計のドル値を表す小数です 複数化する必要はありません 注文:quarter->penny 出力は <#_of_coins> …
29 code-golf 

1
私のグラフは平面ですか?
あなたの仕事は、グラフが平面かどうかを判断することです。 グラフは、平面に埋め込むことができる場合、つまり交差するエッジなしで描画できる場合は平面です。 入力:次の形式から選択した無向グラフが表示されます。 エッジリスト、たとえば [(0, 1), (0, 2), (0, 3)] 隣接マップ、例えば {0: [1, 2, 3], 1:[0], 2:[0], 3:[0]} 隣接行列、例えば [[0, 1, 1, 1], [1, 0, 0, 0], [1, 0, 0, 0], [1, 0, 0, 0]] ノード名は数字、文字列などになりますが、選択する形式は任意のグラフをサポートできる必要があります。ノード名にコードを入れません。自己ループはありません。 標準入力、STDIN、コマンドライン引数、関数引数など。 出力:すべての平面グラフに対して特定の出力を返し、すべての非平面グラフに対して異なる特定の出力を返す必要があります。 STDOUT、関数の戻り値など、出力の標準選択。 例: 平面: [] [(0,1), (0,2), (0,3), (0,4), (0,5), (0,6)] [(0,1), (0,2), …

7
建築家がスカイラインを視覚化できるようにします
都市計画プロジェクトの一環として、都市のスカイラインを表示するプログラムまたは機能を作成する割り当てを取得しました。建築家からの入力があります。プロジェクトは起動段階にあるため、非常に大まかなスケッチで十分です。もちろん、最も簡単な方法は、単にASCIIアートでスカイラインを描くことです。 すべての建物は川沿いにあるため、すべて揃っています。建築家は各建物の高さを入力として提供し、コードはスカイラインを表示する必要があります。 アーキテクトからの入力は、整数または半整数のいずれかです。数値が整数の場合、建物の屋根は平らになりますが、半分の整数では屋根が傾斜します。ゼロは単に平らな地面になります。建物の壁は3文字離れており、ゼロは1文字幅です。隣接する建物は壁を共有しています。 出力に関する詳細と説明については、以下の例をご覧ください。 N = 3 ___ | | | | |___| N = 3.5 _ / \ | | | | |___| N = 6 ___ | | | | | | | | | | |___| n = 0 _ 入力例: 3 3.5 0 2 _ ___ …

30
1 / N確率
単純なコードゴルフの課題が十分にないためです。 整数1≤N≤10000が与えられた場合、任意の名前のないプログラムまたは関数を作成し、1 / Nの擬似乱数確率で言語のTrue値を出力します。 命名の要件が削除されたことに注意してください。回答とスコアを適宜編集してください。 一部の言語では、1(または-1)と0とTrueとFalseを使用します。 例: 入力テストの例: 4 -> True 4 -> False 4 -> False 4 -> False 4 -> False 4 -> True 4 -> False 4 -> False つまり、4が与えられます。25%の確率でTrueを返し、75%の確率でFalseを返します。

30
配列内の最大数と最小数を見つける
タスク タスクは非常に簡単です。整数と文字列のみを含む配列を指定すると、最大数と最小数を出力します。 テストケース Input: [1, 2, 3, 4, 5, 6, 7, 8] Output: 1, 8 Input: [5, 4, 2, 9, 1, 10, 5] Output: 1, 10 Input: [7, 8, 10, "Hello", 5, 5] Output: 5, 10 文字列内の数値は整数と見なされません。 Input: [1, 2, 3, 4, "5"] Output: 1, 4 整数が1つだけの場合、最大整数と最小整数の両方になります。 Input: [1] Output: …

30
パリンドロームハロー、ワールド
あなたの仕事は、「Greetings、Planet!」を印刷するプログラムを作成することです。正確にコンソールに。簡単そうですね。さて、ここにトリックがあります。コードは回文でなければなりません。つまり、左から右と同じように右から左に読みます。標準の抜け穴は許可されていません。

10
脚注への括弧
バックグラウンド LISPプログラマーが世界を席巻しました!括弧は神聖な文字として宣言されており、今後はLISPプログラムでのみ使用できます。文学作品のカッコは脚注に置き換えられることが決定されており、これを自動化してマークダウンテキストを簡素化することがあなたの仕事です。 入力 入力は、アルファベットのASCII文字、スペース、および特殊文字を含む単一の文字列,.!?()です。改行や数字は含まれません。括弧は正しく一致します。 出力 入力文字列内の一致した括弧の各ペアを脚注に変換します。これは次のように発生します。 括弧の最初の一致するペアとそれらの間の部分文字列1を、Markdownタグ<sup>との間でラップされた開始番号で置き換える</sup>。 文字列の最後に追加 2つの改行、 Markdownタグ<sub>、 ステップ1の番号 スペース、 括弧の間の部分文字列、および 終了タグ</sub>、この順序で。 文字列にまだ括弧が残っている場合は、手順1に進みます。 出力は結果の文字列であり、末尾に改行が含まれる場合があります。出力が正しい限り、この正確なアルゴリズムを実装する必要はありません。括弧がネストされている場合があることに注意してください。その場合、他の脚注への参照を含む脚注があります。括弧の間の部分文字列も空にすることができます。例については、以下のテストケースを参照してください。 ルールとスコアリング 完全なプログラムまたは関数のいずれかを作成できます。最小のバイトカウントが優先され、標準の抜け穴は許可されません。 ご使用の言語が10進数をネイティブにサポートしていない場合(咳 Retina 咳)、バイナリまたは単項を含む別のベースで脚注番号を指定できます。ただし、単項数を使用すると、ペナルティが+ 20%になります。 テストケース 入力: This input contains no parentheses. 出力: This input contains no parentheses. 入力: This has (some) parentheses (but not so many). 出力: This has <sup>1</sup> parentheses <sup>2</sup>. …

4
Eternal 2014 — PCG.SE新年のパズル2015
それで、2015年になり、 昨年のパズルから の回答の多くが 無効な出力を生成し始めたので、今度は2015年の数字を含む質問の時です。 を除いて...なぜ?昨年の問題に対する日付に基づいた回答が有効なままであったら、それは気に入らないでしょうか?2015年にならないようにカレンダーを変更して、2014年にいつまでも永遠に住み続けますか? Eternal 2014 notationと呼ばれる新しい日付表記を次のように定義しましょう。 2014年以前の日付の場合、日付は予後グレゴリオ暦と同じになります。 年2015年以降の日付については、今年は2014年に滞在し、月はそれが2014年に同じ月のサイクルは永遠に過去月12ですからを継続した場合だろう数になります2015-02-08でしょう2014-14-08、と2020-12-31なります2014-85-02。2014はうるう年ではないため、うるう日は考慮されないことに注意してください。 あなたのタスクは、入力としてユリウス天文日付を取り、Eternal 2014表記のユリウス日付に対応する日付を、いずれYYYY-MM-DDかのDD/MM/YYYY形式で返すプログラムまたは関数を作成することです。 入力したユリウス日は、常に1721426(1月1日、1)から2914695(1月23日、3268)までの整数であると仮定できます。年には、4桁にパディングする先行ゼロが含まれるかどうかが含まれますが、月と日には常に2桁にパディングする先行ゼロが含まれている必要があります(また、年には4以外の桁にパディングする先行ゼロを含めることはできません)。 以下は、すべての許容可能な形式の入力例と出力例です。 > 1721426 1-01-01 01/01/1 0001-01-01 01/01/0001 > 2086302 999-12-31 31/12/999 0999-12-31 31/12/0999 > 2456659 2014-01-01 01/01/2014 > 2456789 2014-05-11 11/05/2014 > 2457024 2014-13-01 01/13/2014 > 2457389 2014-25-01 01/25/2014 > 2469134 2014-411-07 07/411/2014 > 2567890 2014-3657-29 29/3657/2014 …

24
非常にシンプルなグリッドマーク
3つの正の整数W、H、およびNを取り込むプログラムまたは関数を作成します。通常の英語の読み取り順序の.N番目ごと.がに置き換えられたのW×Hグリッドを印刷または返しXます。 たとえば、W = 7、H = 3、N = 3の場合、グリッドの幅は7文字、高さは3文字で、左上から3文字ごとに読み取られるのはX: ..X..X. .X..X.. X..X..X 同様に、入力がW = 10、H = 4、N = 5の場合、出力は次のようになります。 ....X....X ....X....X ....X....X ....X....X ノート 「通常の英語の読み順」とは、各行を左から右へ、つまり上から下へ行くことを意味します。 Nが1の場合、すべて.のがになりXます。 およびの代わりに、任意の2つの異なる印刷可能なASCII文字を使用できます。 .X スペース( )を使用する場合、結果が視覚的に同じになる場合、後続のスペースは必要ありません。(空の行はまだ必要です。) グリッドを形作る改行の代わりに他のものを使用することはできません。 W、H、およびNの正確な入力形式と順序は、それほど重要ではありません。[H,W,N]またはN\nW,H大丈夫のようなもの。 出力の末尾の改行は問題ありません。 バイト単位の最短コードが勝ちです! 例 W = 5, H = 3, N = 1 XXXXX XXXXX XXXXX W = 5, H …

6
それはBSです!(トランプゲーム)
BSは、ゲームの目的がすべてのカードを失うことであるカードゲームです。 ゲームは4人のプレーヤーと52枚のカードデッキで構成されます。各プレイヤーにはランダムに13枚のカードが配られます。通常、カードには2〜10、エース、ジャック、クイーン、キングのラベルが付けられますが、簡単にするために、カードには0〜12の番号が付けられます。プレーヤーの手にあるカードの数は公開情報ですが、プレーヤーだけが自分の手にある特定のカードを知っています。 ゲームは次のようになります:最初のプレーヤーは、0のラベルが付いたカードを好きなだけ捨て札の山に置きます(通常は、0のラベルが付いたすべてのカードをプレイする必要はありませんが、そうするのが最善です) )。彼は少なくとも1枚のカードをプレイしなければなりません。2番目のプレーヤーは1のラベルを付けたい数のカードをプレイし、3番目のプレーヤーは2をプレイします。12の後、0にリセットされます。 あなたがプレイすることになっているカードのいずれかを持っていない場合はどうなりますか?覚えておいて、あなたは少なくとも1枚のカードをプレイする必要があります-実際には、あなたが望むカードをプレイすることができます!(実際、正しいカードを持っている場合でも、嘘をついて別のカードをプレイできます)。ただし、誰かがあなたに電話して「BS!」と言うことはできます。その誰かが正しく、あなたが嘘をついていたなら、あなたは捨て札の山にあるすべてのカードを取らなければなりません。報酬として、あなたをコールしたプレイヤーは、自分のカードの1つを捨て札の山にランダムに置きます。ただし、告発者が間違っている場合、彼はすべてのカードを破棄パイルに入れなければなりません。あなたがプレイするカードの数について嘘をつくことができないことに注意してください。 より詳細な情報: ゲームの開始時に、4人のランダムなプレイヤーが選ばれます。少なくとも1000のゲームがあるため、各プレイヤーはプレイする機会を得ます。ターン順は、ゲームの開始時にランダムに決定されます あなたは1枚の正しいカードと1枚の間違ったカードを返却した場合、それは嘘と考えられている(あなたが与えることになっていた場合、すなわち2秒を、あなたは1与えた2と1 1を、その後のが嘘をついていることを、) 2人以上のプレイヤーが両方とも同時にBSと言う場合、1人がランダムに選択されます。 スコアは、勝ったゲームの割合です。 最大1000ラウンドがあり、1ラウンドはすべてのプレーヤーが1回行くことです。通常、この前に誰かが勝ちます。誰も勝てない場合、プレイされたゲームの総数にカウントされますが、誰も勝ちません。 仕様: を拡張するクラスを作成する必要がありますPlayer。次のようになります。 package players; import java.util.ArrayList; import java.util.List; import controller.*; public class Player1 extends Player { @Override protected List<Card> requestCards(int card, Controller controller) { Card[] hand = getHand(); List<Card> ret = new ArrayList<Card>(); for (Card c : hand) …

8
アメリカの国旗を印刷してください!
特別な独立記念日(米国)をテーマにした今日のチャレンジ。このアメリカ国旗のアスキーアート表現を印刷するプログラムを作成する必要があります。 0 |--------------------------------------------------------- | * * * * * * #################################| | * * * * * | | * * * * * * | | * * * * * #################################| | * * * * * * | | * * * * * | | * …

13
キーボードフレンドリーな番号を生成する
最も一般的なコンピューターのキーボードレイアウトには、10進数字キーがあります 1234567890 上部の文字キーの上を走っています。 10進数字の近傍を、それ自体の数字キーと、数字キーが存在する場合はすぐに左右にある数字のセットとします。 たとえば、0の近傍は{0, 9}であり、5の近傍はです{4, 5, 6}。 ここで、キーボードフレンドリー番号を正の整数(先頭にゼロのない10進数形式)として定義します。これは、最初の数字の後の数字の連続するすべての数字が前の数字の近くになるように上記のレイアウトで入力できます。 すべての1桁の数字(1〜9)は、キーボードフレンドリーです。 22321などの数字は、すべての数字(最初の数字はカウントしない)が直前の数字の近くにあるため、キーボードフレンドリーです。 1245のような数ではない 4が2(またその逆)の近傍にないため、キーボード優しいです。 例えば109のような数でない 0は端がないループの周りを行う1の近傍にないのでキーボード優しいです。 キーボードフレンドリーな数字を小さい順に並べることで、整数シーケンスを作成できます。 キーボードフレンドリーな数字シーケンスの最初の200の用語を次に示します。 N KFN(N) 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 11 11 12 12 21 13 22 14 23 15 32 16 …

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