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

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

5
グループ化されたカフェの営業時間を示す標識
おそらく、さまざまな店のドアにこれらのサインを見たことがあります。 営業時間 mon-fri 0900-1800 土日1100-1530 ここでのタスクは、週全体の営業時間のリストから、同じ営業時間を持つ連続した日をグループ化するようなサインを生成することです。週は、連続していると見なされるものに対して「ラップアラウンド」することに注意してください。 入力: 月曜日から始まる、週の各日の営業時間を表す7つの要素。 各要素は、XXXX-XXXXという形式の文字列です 入力例: 0900-1800 0900-1800 0930-1730 0930-1730 0900-1500 1100-1500 1100-1500 入力を配列として送信しても構いません(たとえば、stdinから読み取らない場合は関数への入力として) 出力: 営業時間のリスト。同じ営業時間の連続した日が範囲として表示されます。日曜日(最終日)と月曜日(最初の日)も連続した日であることに注意してください。 前日または後日と営業時間が類似していない日は単独で印刷されます 日は3つの小文字で指定されます:mon tue wed thu fri sat sat sun 入力の最初の要素はmonに、tueの隣などに対応することに注意してください。 営業時間は入力のように表示されます 2つの例 mon-fri 0900-1800, sat-sun 1100-1500 mon-wed 1030-1530, thu 100-1800, fri-sun 1200-1630 出力はソートされる必要があるため、範囲は曜日が週の順序で表示されます。月曜日が最初であることが好まれますが、週が終わるため、グループの最初ではない場合があります。したがって、この場合、tueが最初の範囲です。 tue-fri 0900-1800, sat-mon 1100-1500 連続しない限りグループ化しないでください。ここでは水曜日と金曜日の営業時間は同じですが、営業時間の異なる木曜日で区切られているため、単独でリストされています。 mon-tue 1000-1200, …
20 code-golf 

8
並べ替えを視覚化する
のようなリストがあり、[3, 0, 4, 2, 1]選択ソートを使用してソートすると、次のように視覚化できます。 3,0,4,2,1 |-| 0,3,4,2,1 |-----| 0,1,4,2,3 |-| 0,1,2,4,3 |-| 0,1,2,3,4 この課題は、このようなソートを視覚化することです。 入力 入力は、任意の形式の正の整数のリストになります。 仕事 提出物は、一度に2つの要素のみを交換することで入力リストをソートする必要があり、スワップごとに、提出物はリストと、交換される各要素の下の文字を表示する必要があります。交換された数字に複数の数字がある場合、文字は数字の下にある可能性があります。最後に、提出にはソートされたリストが表示されます。 その他の規則 ソートは、n 4よりも少ないスワップを使用する必要があります。nはリストの長さです。 ソートは確定的である必要はありません。 スワップの下の文字は、スペース以外の任意の文字にすることができます。

20
リストの「再帰サイズ」を見つける
リストの「ラップされていないサイズ」を見つけます。 RS長さ(含まれるアイテムの数)としてリストを含まないリストの再帰サイズ、および長さとそれらのリストの再帰サイズの合計としてリストを含むリストの再帰サイズを定義します。 チャレンジ 特定のリストの再帰サイズを可能な限り少ないバイト数で出力するプログラムまたは関数を作成します。 入力はリストであり、数字、文字列(言語に含まれている場合)、および同様のリストを含めることができます。 例えば: RS([]) = 0 RS([[]]) = 1 RS([4, 5, 6]) = 3 RS(["four", "five", "six"]) = 3 RS(["[[[[]]]]", "[][][][][]", "][][[[]]][]["]) = 3 RS([[4, 5, 6]]) = 4 RS([["four", "five", "six"]]) = 4 RS([["[[[[]]]]", "[][][][][]", "][][[[]]][]["]]) = 4 RS([[4], [5], [6]]) = 6 RS([["four"], ["five"], ["six"]]) …

30
デジタル時計を表示する
デジタル時計を表示する (私は多くの時計の課題があり、それらをすべて読み込もうとしましたが、これはユニークだと確信しています) 連続形式で表示されたデジタル時計を更新するいくつかのコードを書くh:m:s場合h、m及びs1又は2文字ずつを占めることができるが。@BlueEyedBeastが述べたように、単純な用語での制限は、基本的に、示されている時間を置き換えることを望んでいます。 改行は使用できません 末尾のスペースは許可されます 他の末尾の文字は使用できません 秒を逃さないでください(57-> 59は許可されていません) 「0」で始まる番号は、2文字を超えない限り許可されます。 コードは入力を受け付けてはいけません 言語が入力なしで現在の時刻を取得できない場合、標準で許可されている方法で最大8バイトの入力に使用できます 出力は標準出力にする必要があります これはcodegolfなので、最短の答えが勝ちます! 例 私は*> <>(starfish)という名前の言語に取り組んでいます。これは、このようなプログラムは> <>(ファイルI / Oを待つだけ)では不可能だからです。その中に動作するデジタル時計プログラムがあります(未使用)。このプログラムは*> <>で書かれています: s":"m":"hnonon" "ooo88888888888ooooooooooo1S 注:s =秒、m =分、h =時間、S = sleep(100ms * x)を除いて、このすべては> <>と同じです。 この出力: 14:44:31 終了するまで100msごとに更新します。 許可されない例 以下は許可されていません。 1: 14:44:3114:44:32 2: 14:44:31 14:44:32 3: 14:44:31 14:44:32 時刻は、出力された最初の行に残り、目に見える末尾の文字がない必要があります。ただし、端末をクリアすることは許可されます。これは、末尾文字がまだないためです。
20 code-golf 

30
強盗:正規表現を破る-ヘビを作る
これが強盗のスレッドです。警官のスレッドはここにあります。 スネークマトリックスは、次のパターンに従う正方マトリックスです。 3行3列: 1 2 3 6 5 4 7 8 9 および4行4列: 1 2 3 4 8 7 6 5 9 10 11 12 16 15 14 13 あなたの仕事は、入力を受け取り、nそのような行列を、警官のポストと同じ言語で、警官の正規表現に一致するコードで作成することです。コードの出力形式は、警官のコードの出力形式と一致する必要があります。 Copの投稿の下にコメントを残して、クラックしたことを示してください。 受賞基準: 勝者は、ほとんどの提出をクラックしたユーザーになります。同点の場合、複数の勝者が存在します。

25
スペースで区切られた番号
N負でない整数のリストが与えられたら、それらの数値を、それぞれの長さまでスペースで左詰めして出力しますN。(または、文字/文字列リストを返します。)Nリスト内の最大数の桁数以上であると想定できます。出力では末尾のスペースを使用できます。 これらの数字を含む文字列を使用することもできますが、 Nの長さではなく、リスト内の要素の数です。また、文字列のリストを取得することもできます["1", "2", "3"]。 これはコードゴルフであるため、バイト単位の最短プログラムが優先されます。 テストケース input => 'output' 0 => '0' 1 => '1' 2 3 => ' 2 3' 2 10 => ' 210' 4 5 6 => ' 4 5 6' 17 19 20 => ' 17 19 20' 7 8 9 10 => ' 7 …
20 code-golf  string 

29
最大偏差を見つける
この問題は、Quoraで最初に尋ねられた質問から「インスパイアされた」ものです(コードゴルフではありません)。私はそれを皆さんに挑戦したいだけです(そして、ここでの私の最初の問題提出)。 整数要素の配列vと整数d(dは配列の長さ以下であると仮定します)が与えられた場合、配列内のd連続した要素のすべてのシーケンスを考慮します。各シーケンスについて、そのシーケンス内の要素の最大値と最小値の差を計算し、偏差と名付けます。 あなたの仕事は、上記で考慮したすべてのシーケンスのすべての偏差の中で最大値を計算し、その値を返すか出力するプログラムまたは関数を作成することです。 実施例: v: (6,9,4,7,4,1) d: 3 The sequences of length 3 are: 6,9,4 with deviation 5 9,4,7 with deviation 5 4,7,4 with deviation 3 7,4,1 with deviation 6 Thus the maximal deviation is 6, so the output is 6. これはコードゴルフであるため、バイト単位の最短回答が優先されます。

12
KITTカーアスキーアート
80年代のテレビシリーズKnight Riderは、KITTと呼ばれるインテリジェントな自己認識型の車を搭載していました。車の一つの特徴的な側面は、にKITTを許さフロントマウントスキャナバーだった(と見ている「を参照してください。」怪しいですまた、以前の別のテレビシリーズのファンにはなじみがありました)。 この写真に見られるように、スキャナーには8つのライトがありました。 図のようにライトが「移動」しました このアニメーション画像に。 あなたが今推測しているように、あなたの仕事は、ASCIIアートの動く光でスキャナーバーを再作成することです。 チャレンジ 整数をt指定すると、次のように定義された、その瞬間のスキャナーバーの状態を出力します。 スキャナーは8つのライトで構成されています。 どの時点でも、ライトの1つがアクティブになり、として表示され#ます。時間にアクティブであった光t-1とt-2今さ淡色、およびとして示されています+。現在アクティブなものと一致しない限り。残りのライトは消灯していますで、として表示され-ます。 アクティブライトは左から右に移動し、次に右から左に移動します。 それぞれの正確な出力をt以下に詳しく説明します。 0 --> #++----- % The leftmost light is active, and it just came from the right. % The two neighbouring lights are dimmed 1 --> +#------ % The active light has bounced to the right, and it is …

4
ASCIIアートが特に得意な言語はありますか?
テキスト出力とASCIIアートを特に対象とする難解な言語やゴルフ言語があるかどうか疑問に思っていましたか? たとえば、05AB1Eは、少なくともベースコンバージョンをターゲットとして開始されました。テキスト出力およびテキスト出力アートを対象とするゴルフ言語はありますか? もしそうなら、彼らはここにヒントページを持っていますか、それらは一般的に使用されていますか? 注:ASCIIアートを出力できる言語を探しているのではなく、比較的短く簡潔な方法でASCIIアートの課題を完了することができるように意図的に設計された言語を探しています。


25
爆発したサフィックス
ASCII文字列を指定して、その展開されたサフィックスを出力します。たとえば、文字列がの場合、abcde5つのサフィックスがあり、最長から最短の順に並べられています。 abcde bcde cde de e 各サフィックスはその後さ爆発という接尾辞でその一インデックス付きの場所として何回もコピーされる各文字を意味し、。たとえば、の接尾辞を分解するとabcde、 abcde 12345 abbcccddddeeeee bcde 1234 bccdddeeee cde 123 cddeee de 12 dee e 1 e 全体として、展開されたサフィックスabcdeは abbcccddddeeeee bccdddeeee cddeee dee e ルール これはコードゴルフなので、最短のコードが優先されます。 入力は、印刷可能なASCII文字で構成されます。(これは改行を除外しますが、スペースを含みます。) 出力では、各文字列が個別の行に表示されます。 各行には末尾のスペースを使用できますが、末尾に余分な改行がある場合があります。 テストケース '' 'a' a 'bc' bcc c 'xyz' xyyzzz yzz z 'code-golf' coodddeeee-----ggggggooooooollllllllfffffffff oddeee----gggggoooooolllllllffffffff dee---ggggooooollllllfffffff e--gggoooolllllffffff -ggooollllfffff …
20 code-golf  string 

6
ASCIIポーカーチップスタックアレンジメントを作成する
ポーカーには、多くの場合トーナメントで強制される、チップの配置方法に関するエチケットがあります-チップは、主にいくつかの大きな金種のチップを隠さないために、他者の後ろにいることによって対戦相手から「隠されない」ことがあります。 チャレンジ ASCIIでポーカーをプレイするので、合計値を考慮してASCIIチップスタック配置を描画する関数またはプログラムを作成する必要があります。 n。 入力 -正の整数n(最大2**32-1処理必要があります) 出力 -以下に定義されているスタック配置のASCII表現。 これには、各行の右側に空白が含まれている可能性があるため、最長(下)行の印刷可能文字が使用する長さよりも1文字長い行はありません。 これには、単一の末尾の改行が含まれる場合があります。そして あなたが好む場合はチップを表す文字は小文字であってもよいです。 スタックの配置は次のとおりです。 宗派を考慮して、可能な限り少ないチップを含む(以下を参照)。 「スタック」(列)に等しい価値のあるチップがあります。 短いスタックが高いスタックの右側になるように注文してください。そして より大きな金種チップを持つスタックが、より小さな金種の同じサイズのスタックの右側になるように注文します(右側の敵に見えることを表します) チップ自体は、色を識別する個々の文字として表されます。 White : 1 = W Red : 5 = R Green : 25 = G Black : 100 = B Yellow : 500 = Y Pink : 1K = P Orange : 5K …

3
n Sigイチジクへのラウンド
チャレンジ 数を考えるxと数n、ラウンド数xにn大きな数字と出力結果を。 有効数字 数値の有効数字は、その測定分解能に寄与する意味を持つ数字です。これには、先行ゼロを除くすべての数値が含まれます。 小数点以下の先行ゼロはまだ重要ではないことに注意してください。 数字を丸めるときに、次の数字が5以上の場合は、ゼロから丸める必要があります。 小数点の後のすべての末尾のゼロは、重要としてカウントされます。 入力 最初の数値はx、丸められる数値です。2番目の数値はn、丸める必要がある有効数字の数ですx。 x-1,000,000,000〜1,000(000,000を含む)の間の数値(コードは整数と浮動小数点の両方を処理する必要があります)。n1から50までの正の整数になります。nの桁数より大きくなることはありませんx。 入力はなることはありません0か、のいずれかの形式0たとえば、0.000または000。 例 Inputs: 2.6754, 2 Output: 2.7 2.7000小数点以下のゼロは有効数字としてカウントされるため、の出力は無効になります。 Inputs: 0.00034551, 4 Output: 0.0003455 Inputs: 50237.1238, 3 Output: 50200 これは小数点を持たないことに注意してください。 Inputs: 2374905, 1 Output: 2000000 Inputs: 543.0489, 4 Output: 543.0 Inputs: 15, 1 Output: 20 Inputs: 520.3, 3 Output: 520 必要に応じて、520.代わりに出力できますが、出力はできません520.0。 …
20 code-golf  math 

16
シーケンス内の奇妙なものを見つける
チャレンジ: がより小さい正の整数F(N) = 2^N + 1である関数を考えます。この関数で定義されるシーケンスは次のとおりです。N31 3, 5, 9, 17, 33, 65, 129, 257, 513, 1025, 2049, 4097, 8193, 16385, 32769, 65537, 131073, 262145, 524289, 1048577, 2097153, 4194305, 8388609, 16777217, 33554433, 67108865, 134217729, 268435457, 536870913, 1073741825 入力は次のように生成されます。 上記のシーケンスから5つの連続した整数を取得します。 それらの1つを別の正の整数に置き換えます(上記のシーケンスの一部である場合とそうでない場合があります)。 オプションで、結果の5つの数値を並べ替えます。 このような5つの整数のリストが与えられた場合、スワップインされたため、元の5つの連続した整数の一部ではないものを見つけます。 例: 元のサブリスト:5, 9, 17, 33, 65。 1つを置き換えます5, 7, 17, …

4
茎葉プロットの検証
茎と葉のプロットは、全てが、最後の数字によって決定されたグループ内の数値の束を表示します。たとえば、次のデータセットがあるとします。 0, 2, 12, 13, 13, 15, 16, 20, 29, 43, 49, 101 この茎と葉のプロットを作成できます。 0|02 1|23356 2|09 3| 4|39 5| 6| 7| 8| 9| 10|1 最初の行のステムは0であるため、その「葉」-後の数字|-は、0から10までの値を表します。各茎の葉が並べ替えられます。葉のない茎(3など)がプロットに表示されます。101の値は100を含む100から110を除くので、そのステムは10(100を10で割った値)です。 あなたの課題は、テキストが有効なステムとリーフプロットであるかどうかを確認することです。有効なプロットは次のルールを満たします。 データの範囲内のすべてのステム(つまり、10の幅のグループ)ごとに正確に1つの行があります(範囲の中央にあるリーフを含まないステムを含む) 範囲外のステムはありません すべての葉は右に昇順でソートされます すべてのステムは昇順でソートされます 数字のみ(区切り文字以外|) 小数部分のある数値を扱う必要はありません。ステムの余分な先行ゼロを承認または拒否できますが、空白のステムは許可されません。少なくとも1つの値があります。各行の葉の後の余分なスペースのみを想定できます。先頭または末尾の改行を想定できます。すべての文字は印刷可能なASCIIです。 関数またはプログラムは、有効なプロットの場合は真の値を、無効なプロットの場合は偽の値を(画面または標準出力に)返すか出力する必要があります。標準の入力、ファイルからの入力を、1つの大きな文字列として、文字列の配列として取得できます-最も便利なものは何でも。 有効なプロットであるいくつかのテストケースを次に示します(空白行で区切られています)。 2|00003457 3|35 4|799 5|3 99|3 100|0556 101| 102| 103|8 0|0 無効なプロットであるテストケースと、右側のコメントを次に示します。 |0 Blank stem 5|347 …

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