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

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

5
テキスト迷路ソルバー
stdinの迷路とエントリポイントが与えられたら、stdoutの出口へのパスを出力するプログラムを作成します。プログラムが迷路ごとに(迷路内のすべてのポイントを通過する)簡単なパスを生成しない限り、どのパスでも構いません。 入力では、壁は#で、エントリポイントはでマークされ@ます。出力で迷路とパスを描画するために、それらがすべて明確である限り、任意の文字を使用できます。 あなたはそれを仮定するかもしれません: 入口点と出口点は入力の端にあります 入力のすべての行は同じ長さです 迷路は解決可能であり、サイクルはありません 出口は1つのみ (Unicode)文字数による最短の解決策が優先されます。 例 (入力にはスペースが埋め込まれることに注意してください) #### # # @ ##### # # # ####### #### # # @*##### #* # #****** ####### ### ################### ### # # ## ######### # # # ##### # ############### #@## ###*################### ###*********#*********# ## *#########* # *# # *********** #####**# …

30
ビット演算子を使用せずに2進数で1の量を出力します
説明 数値を指定して、その数値1をバイナリ表現で出力します。 入力 数>= 0あなたの言語を処理することができる最大数を超えることはありませんベース10インチ 出力 1バイナリ表現のs の量。 勝利条件 最短のコードが優先されます。 不許可 ビット演算子。加算や乗算などの他の演算子が許可されます。 組み込みのベース変換関数。 例 Input: Ouput: 56432 8 Input: Output: 45781254 11 Input: Output: 0 0

10
べき乗の最後の桁
このタスクでは、A(10000桁未満)およびB(2 ^ 64未満)が与えられ、(A・A・A・...・A(B回の最後の桁を計算する必要があります。 ))。 入力AとBは、ブランクで区切られた単一の行で指定されます。入力はEOFで終了します。 入力 34543232321323243242434544533445343432434311112223454323232132324324243454453344534343243431111222345432323213232432424345445334453434324343111122234543232321323243242434544533445343432434311112223454323232132324324243454453344534343243431111222345432323213232432424345445334453434324343111122234543232321323243242434544533445343432434311112223454323232132324324243454453344534343243431111222 22337254775808 38758436543765743875437656358764347568437658743658743454354645645543532487548758475847684756897548758457843758437584758478574857438758436587436587436587643875643856783478743658743658764387564387564378658437658743658743687564387564387564765746576475647564756475465746574675647654765476547534587545689475689748574385743765874585743857843765893748643587438957458754376543265874387564384764367584375874758943267632487564357 54545454123 6777744348435743587643756438765436574587564354375674365645643675 23232 3875843654376574357 54545454 出力 6 3 5 9 制約 A Bを計算するために組み込み関数やオーバーロードされた演算子を使用しないでください(実際に計算する必要はまったくありません)。 最短のソリューションが勝ちます!
14 code-golf  math 

10
ハングマンワードゲームゴルフ
redditに触発されました。 Hangmanをプレイするプログラムを作成します。 プログラムは、N個の単語のリストからランダムな単語を選択します(N> 2)。 単語リストは、任意の方法でプログラムに提供できます。 各反復で まだ発見されていない文字にはアンダースコアを使用してゲームの状態を印刷します。 H _ N _ _ _ N 残りの試行回数を出力します 10 stdinからの手紙を読み、ゲームの状態を更新します。間違った手紙を推測した場合は試行を差し引きます。 A (入力) H A N _ _ A N 10 すべての文字が推測されるか、試行回数が0になるまで繰り返します 任意の言語を使用 最少数のキャラクターが勝ちます。 絞首台を描くことは必要ではありませんが、賛成票と称賛を獲得できます。

9
マンチェスターはデータストリームをエンコードします
マンチェスターコーディングは、無線通信で使用される通信プロトコルであり、受信機がデータ自体からクロックレートを回復できるように、定期的なビット遷移を保証します。ビットレートは倍になりますが、安価で簡単に実装できます。アマチュア無線事業者によって広く使用されています。 コンセプトは非常にシンプルです。ハードウェアレベルでは、クロックラインとデータラインは単純にXORされます。ソフトウェアでは、これはビットの入力ストリームをダブルレート出力ストリームに変換し、各入力「1」は「01」に変換され、各入力「0」は「10」に変換されます。 これは簡単な問題ですが、ビットストリームの性質のため、多くの実装に開かれています。つまり、エンコードは概念的にはバイト単位のプロセスではなくビット単位のプロセスです。したがって、エンディアンネスにすべて同意し、入力の最下位ビットが出力の最下位バイトになります。 ゴルフの時間!任意の長さのバイト配列を指定すると、エンコードされたデータマンチェスターの配列を返す関数を作成します。 入力と出力は、ビットストリーム内でリトルエンディアン、最下位バイトが最初、最下位ビットが最初と見なされる必要があります。 ASCIIビットストリーム描画: bit # 5 4 3 2 1 0 5 4 3 2 1 0 IN ------- 1 0 1 0 1 1 ---> [manchester encoder] --- 01 10 01 10 01 01 ----> OUT 例: Example 1 (hex): LSB MSB <-- least sig BYTE …
14 code-golf  binary 

11
古いアイルランドの祝福
誰がこれらの言葉を造ったのかわかりません。私はアイルランド人ではありませんが、アイルランド人に祝福を与えます。 May the road rise up to meet you May the wind be always at your back May the sun shine warm upon your face The rains fall soft upon your fields And until we meet again May God hold you in the hollow of His hand 私はこれを数週間後に投稿することを計画していましたが、昨日は聖パトリックの日であることがわかりました。 ルール: 上記のテキストを正確に生成します。 …

6
数字の三角波を印刷
波の振幅と周期を指定して、波を印刷します。詳細については、サンプル出力を参照してください。波形の総数は周期に等しく、各波形の高さは振幅に等しくなります。振幅と周期は10未満です。末尾のスペースは無視できますが、先頭のスペースは無視できません。 Sample Input 3 2 Sample Output 3 3 232 232 12321 12321 12321 12321 232 232 3 3

17
ローカル変数なしでデッキをシャッフルする[終了]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新することがありますので、上のトピックコードゴルフスタックExchange用。 2年前に閉店。 このパズルの目的は、52枚のカードのデッキを取り、各カードがランダムな位置になるようにシャッフルすることです。 与えられた: deckカードを表す52個の異なる整数の配列。開始時にdeckは、不明な順序で各カードが1枚ずつ含まれています。 int rand(min, max)int minとの間のランダムな整数を返す関数max。この関数は本当にランダムであると仮定できます。 void swap(x, y)デッキ内の2枚のカードを交換する機能。を呼び出すswap(x, y)と、カードの位置xと位置yが切り替わります。 いつ: プログラム呼び出しshuffle()(shuffle(deck)またはdeck.shuffle()または実装が実行したい場合)。 次に: deck 完全にランダムな順序で各カードを正確に1つ含める必要があります。 キャッチ: 変数を宣言することはできません。swapとrandを好きなだけ呼び出しますが、独自の変数を宣言することはできません。これもforループカウンターがますforeach。 明確化: 選択した言語に合わせてマイナーな詳細を変更できます。たとえば、次のように書くことができますswap参照によって2つの整数を切り替えるます。変更は、パズルを簡単にするためではなく、あなたの言語でこの作業を行うべきです。 deck グローバル変数にすることも、パラメーターとして受け取ることもできます。 あなたは何でもやりたいことができます deck、その長さは変更できません。 カードには、0〜51、1〜52などの番号を付けることができます。 これは任意の言語で記述できますが、言語の組み込みshuffle関数をごまかすことはできません。 はい、同じ行を52回書くことができます。誰も感動しません。 実行時間は重要ではありませんが、真のランダム性は重要です。 これは実際にはゴルフのコードではありませんが、コードを最小化/難読化してください。 編集:定型コードとビジュアライザー .NETまたはJavaScriptを使用している場合、次のテストコードが役立ちます。 JavaScript: CoffeeScriptソースを使用した手軽なJavaScriptビジュアライザー:https : //gist.github.com/JustinMorgan/3989752bdfd579291cca 実行可能バージョン(shuffle()関数に貼り付けるだけ):http : //jsfiddle.net/4zxjmy42/ C#: C#コードビハインドを備えたASP.NETビジュアライザー:https ://gist.github.com/JustinMorgan/4b630446a43f28eb5559 swapおよびrandユーティリティメソッドのみを使用したスタブ:https : //gist.github.com/JustinMorgan/3bb4e6b058d70cc07d41 このコードは、デッキを数千回並べ替えてシャッフルし、いくつかの基本的な健全性テストを実行します。各シャッフルについて、繰り返しのないデッキに正確に52枚のカードがあることを確認します。次に、ビジュアライザーがデッキの各場所で終わる各カードの頻度をプロットし、グレースケールのヒートマップを表示します。 ビジュアライザーの出力は、明らかなパターンのない雪のように見えるはずです。明らかに、真のランダム性を証明することはできませんが、スポットチェックを行うための迅速かつ簡単な方法です。シャッフリングアルゴリズムの特定のミスが出力に非常に認識可能なパターンをもたらすため、このようなものを使用することを推奨します。次に、2つの実装からの出力の例を示します。1つには一般的な欠陥があります。 …

12
次の2月29日の曜日
日付を取り、その日付の次の2月29日の曜日を返す関数を作成します。 入力はISO拡張形式の文字列です:YYYY-MM-DD(たとえば、2010年5月27日は「2010-05-27」になります)。 出力は、曜日の名前を表す文字列です(例:「月曜日」)。大文字と小文字は関係ありませんが、フルネームは英語で入力してください。 指定された日付が2月29日の場合、次の 2月29日の曜日を返します。 Proleptic Gregorian Calendarの計算を使用します(そのため、全体の長さについてはグレゴリオうるう年の計算を使用します)。ユリウス暦について、またはユリウス暦からグレゴリオ暦への切り替えがいつ発生したかを心配しないでください。すべてについてグレゴリオを仮定してください。 この関数は、少なくとも「0001-01-01」〜「2100-01-01」の範囲で機能する必要があります。 選択した言語が提供する標準ライブラリは自由に使用できますが、ソリューションの一部としてそのコードを含める場合を除き、サードパーティのライブラリは使用しないでください。 最短コード(最少文字数)が勝ちます。 例: func("0001-01-01") -> "Sunday" func("1899-12-03") -> "Monday" func("1970-01-01") -> "Tuesday" func("1999-07-06") -> "Tuesday" func("2003-05-22") -> "Sunday" func("2011-02-17") -> "Wednesday" func("2100-01-01") -> "Friday" (いいえ、関数に名前を付ける必要はありませんfunc) ヒント: 400で割り切れない00で終わる年はうるう年ではないことに注意してください。 0001年1月1日は月曜日です。
14 code-golf  date 

30
正の整数の合計。[閉まっている]
閉じた。この質問には、詳細または明確さが必要です。現在、回答を受け付けていません。 この質問を改善したいですか?詳細を追加し、この投稿を編集して問題を明確にします。 3年前に閉店しました。 問題: 整数のセットが与えられたら、その中のすべての正の整数の合計を見つけます。 入力: t –テストケースの数[ t <1000] 次のそれぞれの上のTライン、整数N [-1000≤ N ≤1000年] 出力 プログラムは、すべての正の整数の合計を出力する必要があります。 オンライン裁判官でコードを確認する スコア ASCIIコードが32以下のシンボルを除き、スコアはプログラムのソースコードのサイズと同じです。 ベストスコアリストは次のとおりです。Pythonベストスコア(ベストスコアは29)

20
ランダムダイスチップ
標準のサイコロ(ダイス)では、反対側の面が7になるように番号が配置されます。ランダムスローに続いて9回のランダムチップを出力する、可能な言語で最短のプログラムを記述します。チップはサイコロの4分の1回転です。たとえば、サイコロが5に面している場合、すべての可能なチップは1,3,4および6です。 望ましい出力の例: 1532131356

4
コードゴルフの無料書籍はありますか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 2年前に閉店。 一般的に、特にJavaとC ++でのコードゴルフに関する無料の書籍をお勧めできますか?
14 code-golf  tips 

2
与えられた数が吸血鬼数かどうかをテストします
編集:複雑さを増すために、チャレンジにさらに追加しました。 数学では、吸血鬼番号(または真の吸血鬼番号)は偶数の桁数nを持つ合成自然数vであり、2つの整数xとyに因数分解できます。ここで、vには、xおよびyからのすべての数字が任意の順序で正確に含まれ、多重度がカウントされます。xとyは牙と呼ばれます。 ヴァンパイアナンバーの詳細 擬似吸血鬼の数 擬似吸血鬼番号は吸血鬼番号に似ていますが、n桁の擬似吸血鬼番号の牙の長さはn / 2桁である必要はありません。擬似吸血鬼の数字の桁数は奇数、たとえば126 = 6×21です。 入力 コマンドラインまたは標準入力から番号を受け入れる 出力 「1260 = 21 * 60」(番号がヴァンパイアの場合、最初に小さい牙。) 「1261はヴァンパイア番号ではありません。」(番号がヴァンパイア番号でない場合) 「126 = 6 * 21」。(番号が偽吸血鬼番号の場合) 編集:番号に複数の牙がある場合は、そのように表示します。 x = fang1a * fang1b = fang2a * fang2b
14 code-golf  math 

23
「a」や「Y」などの非数値で区切られた、文字列内の整数の合計
プログラム内の変数として設定されている文字列で見つかったすべての整数を合計するプログラムを作成します(したがって、プログラムは入力を処理する必要はありません)。整数は、非数値(0、1、2、3 ... 9以外)で区切られます。 例: e7rde f ,fe 43 jfj 54f4sD = 7 + 43 + 54 + 4 = 108 5 = 5 64 545,5445-32JIFk0ddk = 64 + 545 + 5445 + 32 + 0 = 6086 0ab0 = 0 + 0 = 0 追加のメモ: Unicodeのサポートはありません必要はなく、許可します -n(nは整数)は負としてカウントされませんnが、ハイフンの後にn。 答えが画面に印刷される場合があります(必須ではありません)。 最短回答(文字数)が勝ちます。
14 code-golf  string 

13
変装してプログラムを書く[終了]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、 Code Golf Stack Exchangeのトピックとなるようにします。 3年前休業。 課題は、別の言語のように見えながら、HQ9 +の問題のいずれかを解決するプログラムを作成することです。 注:これはゴルフの挑戦ではありません。 ルール: プログラムは、実行時に次のいずれかのタスクを実行する必要があります。 「Hello、World!」を印刷します ソース全体を印刷します。 (見られるように、「ウォール上のビールの99本のボトル」に歌詞を印刷し、ここ)。 一見すると、プログラムは別の言語のように見えるはずです。 格付け ルールを満たす作業プログラム。+3 「他の言語」を実行できる場合は、ボーナスポイント(構文は有効)。+1 「他の言語」が何か有用なことができるなら、さらに多くのポイント。+3 さらに多くの言語でプログラムが有効(かつ有用)であることのボーナスポイントがたくさんあります。2以上の言語ごとに+5。

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