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

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

2
アンダーハンド銀行口座[閉鎖]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新することがありますので、上のトピックコードゴルフスタックExchange用。 閉じた3年前。 あなたは銀行のプログラマーとして働いています。 あなたの仕事は、ある銀行口座から別の銀行口座への取引を処理するプログラムを書くことです。 プログラムは次のことを行う必要があります。 入力を待っている無限ループで実行します。 入力は3つの数字で構成されます。 Accountnumber1、Accountnumber2、およびx金額。例:999222 777333 500 アカウント番号とxが有効かどうかを確認してください。 アカウント番号が同じではなく、データベースに存在し、xがゼロより大きい場合、入力は有効です。 account1からaccount2にお金を転送します。ただし、account1に十分なお金がある場合のみです。 アカウントはネガティブになることはできません。 すべてがうまくいけば、「Transfered x $ from number1 to number2」のようなものを印刷します アカウント番号が無効であるなどの理由で何か問題が発生した場合は、エラーメッセージを出力します。 入力が0の場合停止 データベースには、次の銀行口座が含まれています。 999222: 10000.56$ 888333: 335.13$ 555222: 56.0$ 222111: 123.55$ 123456: 0.0$ 単純なPython 2の例: account_numbers = ["999222", "888333", "555222", "222111", "123456"] account_money = [10000.56, 335.13, 56.0, …

8
行番号-nlを実装する
あなたの仕事はnl、GNUコアユーティリティのコマンドラインツールに似たプログラムを実装することです。 標準的な抜け穴は禁止されています。 GNU sedのコマンドnlや=コマンドなど、ファイルまたは文字列の行に番号を付けるために、組み込みまたは外部の関数、プログラム、またはユーティリティを使用することはできません。 仕様 入力 プログラムは引数としてファイル名を受け入れます。コードはクロスプラットフォームである必要はありません。コードを実行しているOSのファイル名形式を使用する必要があります。つまり、Windowsを使用している場合、ディレクトリ区切り文字は\または/です。 -指定されている場合を含め、64個の入力ファイルを取得できる必要があります。64を超える場合は、最初の64のみを処理します。 ファイル名のリストで、-標準入力を表します。 ファイル名が指定されている場合は、指定された順序でファイルから読み取り、内容を連結し、各ファイルの間に新しい行を挿入します。1つまたは複数のファイル名から読み取ることができない場合(ファイルが存在しないか、読み取り権限がないため)、無視します。指定されたすべてのファイル名が無効な場合、何も出力しません。 ファイル名が指定されていない場合は、標準入力から読み取ります。ファイル名が指定されていない場合、または指定されている場合にのみ、標準入力から読み取ります-。 出力 プログラムは、このように番号が付けられた行で入力を標準出力に出力します(入力に\n、\r\nまたは\r行末があると仮定することができます;都合の良い方を選択しますが、どちらかを指定します)。 <5 spaces>1<tab><content of line 1 of input> <5 spaces>2<tab><content of line 2 of input> ... <4 spaces>10<tab><content of line 10 of input> ... <3 spaces>100<tab><content of line 100 of input> ... ... 行番号には6文字のスペースが割り当てられ、これらの文字の最後に挿入されます。残りはスペースになります(たとえば1、先頭に5つのスペースがあり、22先頭に4つのスペースがあります...)。入力が十分に長い場合、最終的にlineの行番号のスペースが不足します999999。999999行目以降は何も出力しないでください。 入力が空の場合、何も出力しません。 終了ステータス 低い番号が優先されます。エラー1および2が発生した場合、ステータス1で終了します。 入力が正常に受信され、行が正常に番号付けされて出力された場合、ステータス0で終了します。 …

9
Applescriptでのゴルフのヒント
Applescriptでゴルフをするためのヒントはありますか?私は、少なくともApplescriptに特有のゴルフ問題全般のコーディングに適用できるアイデアを探しています(たとえば、「コメントの削除」は答えではありません)。
13 code-golf  tips 

1
コードゴルフアスキーアートミニゴルフ
イントロ ミニゴルフをしましょう!ゴルフボールはa .で、ホールはaで表されOます。あなたはすべての穴に一つずつ穴を開けたいのですが、パッティングが苦手です。実際、斜めに置くことを拒否します!上、下、および両側のみ。 余分なバンパー\を配置してチートを行うことを計画している/ので、ワンショットでボールを入れることができます。この写真に示すように、ボールはバンパーから直角に跳ね返ります。 あなたのショットを呼び出すことを忘れないでください!どんな方向に向かっているのか教えてください。 穴 1:最初のホールは簡単、ストレートショットです!ここにバンパーは必要ありません。 入力: . O 出力: right . O 2:別の基本的なもの、短いターン。ボールはバンパーから落ちて穴に入ります。 入力: . O 出力: left / . O または down . O / 3:一部の穴にはすでにバンパーがあります! 入力: . \O 出力: right . \O \/ または right / \ . /\O 4:一部の穴は非常に複雑です! 入力: / \ \ / / …

3
単語を他の単語に分解します(たとえば、「afterglow」=「aft」+「erg」+「low」)
これがあなたのワードスミスの皆さんのためのものです!単語のリストを取得し、各単語のすべての可能な連結分解のリストを生成するプログラムまたは関数を作成します。例えば: (注:これは、説明のための小さなサンプリングにすぎません。実際の出力ははるかに大きくなります。) afterglow = after + glow afterglow = aft + erg + low alienation = a + lie + nation alienation = a + lien + at + i + on alienation = a + lien + at + ion alienation = alien + at + i + on …

1
Manufactoriaの素数テスト
バックグラウンド Manufactoriaはプログラミングに関するゲームです。プレーヤーは、タスクを完了するために2次元プログラミング言語の形式を使用する必要があります。聞いたことがないなら、最も簡単な学習方法は、ゲームの最初のいくつかのレベルを試すことです。 チャレンジ あなたの課題は、数の素数性をテストするプログラムを作成することです。 入力は、キュー内の一連のN個の青いマーカーになります。Nが素数の場合、プログラムはそれを受け入れます(ロボットを最後まで動かします)。Nが複合の場合、プログラムはそれを拒否する必要があります(どこかに床に落とします)。 提出オプション これは典型的なManufactoriaチャレンジよりも複雑なチャレンジであるため、回答を送信する方法を増やすことを決定しました。 バニラ 提出物を作成してテストするための13x13カスタムレベルを作成しました。カスタムテストレベルは次のとおりです。 13x13カスタムレベル ゲームではカスタムレベルで8つのテストケースのみが許可されますが、理論的には、使用可能なメモリによってのみ制限される任意の自然数Nを処理できるようにする必要があります。 情報目的で、カスタムレベルで提供されるテストケースは次のとおりです。 1 -> reject 2 -> accept 4 -> reject 5 -> accept 7 -> accept 9 -> reject 11-> accept 15-> reject 拡張グリッド 一部のユーザーは、13x13グリッドよりも広いスペースが必要な場合があります。URLの番号を変更して作成されたゲーム内15x15カスタムレベルへのリンクは次のとおりです。 15x15カスタムレベル 悲しいことに、追加のセルにアクセスできないため、より大きなカスタムレベルは機能しません。 The Manufactoria Esolang ManufactoriaはASCIIベースの言語に適応しています。作品をデザイン/テストする別の方法が必要な場合、または最終的なソリューションをゲームボードに適合させることができない場合は、このエソランを使用できます。このエソランに関する情報は、ここで見つけることができます: Manufactoria esolang エソランと実際のゲームの間にはいくつかの矛盾があります。たとえば、コンベアの交差点の処理方法は異なります。これらの不一致を利用しないようにしてください。 より高速なテスト方法 完了するまでに数千ステップを要するプログラムに関しては、ゲームは非常に遅くなります。私の概念実証ソリューションでは、15を拒否するために28042ステップが必要でした。ゲーム内で50倍の高速化をしても、時間がかかりすぎます。 私はこの非常に役立つウェブサイトを見つけました。回答へのリンクをコピーアンドペーストするだけで、特定の入力で回答をテストできます。28042ステップのプロセスには1秒もかかりませんでした。 注意すべきことの1つは、マシンが正常に動作していても、「誤って受け入れられた」というようなメッセージが頻繁に表示されることです。これは、Webページがテストケースのみを知っているためです。たとえば、私のマシンは実際には正しいものでしたが、私のソリューションは3番を「誤って受け入れた」と言うでしょう。 勝つ方法 …

15
最長のスティックを選ぶ
あなたは他の2人の親友と一緒に住んでいる若いプログラミングオタクです。毎週、あなたの一人が家のすべての雑用をしなければなりません、そして、あなたは棒を選ぶことによってそれが誰の番であるかを決定します。最も短い棒を選んだ人は、すべての雑用を失い、します。 皆さんはプログラマーであり、パズルを作成するのが大好きなので、「最短のスティックを選ぶ」をコンピューターパズルに変更しました。 ここにパズルのルールがあります。 各列が棒を表す2Dマトリックスが表示されます。 各列の1はスティックの一部を表し、0は空のスペースを表します 各列の上から下に移動すると、最初にがあり、を押す0とすぐ1にスティックが開始され、列の残りの部分がいっぱいになります1だけ 1つの列を選択するプログラムを作成できます。その列のスティックのサイズが勝者/敗者を決定します。スティックのサイズ==その列の1の数。 ただし、そのプログラムは線形の最悪の場合の時間の複雑さしか持つことができません。 みなさんはプログラマーなので、他の誰かのプログラムが時間の複雑さの限界に達しているかどうかを知るでしょう。 あなたの仕事は: 2D形式または文字列の配列で入力を受け入れるプログラムまたは関数を作成します。 入力は、STDIN / prompt / consoleまたは関数の引数から取得できます。 STDIN /プロンプトから入力を読み込んでいる場合、入力の読み込みと配列への変換にかかる時間は0時間であると想定できます(そうするためのコードが答えに含まれていなければなりません) 最も長い棒が入っている列を決定します。 出力は、関数の戻り値またはSTDOUT / console / alertになります。 プログラム/関数は、線形の最悪の場合の時間の複雑さを持つ必要があります。O(m+n)ここmで、は行n数と列数です。 入力は、次の形式のいずれかです。 2D配列: [ [0, 0, 0, 0], [1, 0, 0, 0], [1, 1, 0, 1], [1, 1, 1, 1] ] 文字列の配列: [ "0000", "1000", "1101", …

4
Golf Stringのformat()逆
Formatメソッドを反転します。 FormatStringクラスのメソッド(またはのような同等のメソッドsprintf)は、ほとんどの言語で使用できます。基本的には、いくつかの追加の書式設定を持つプレースホルダーと、それらのプレースホルダーの代わりに0個以上の値が挿入される「Format」文字列を取ります。 あなたの仕事は、選択した言語で逆関数を実装することです。 API メソッド名のいずれかでなければなりませんformat1かdeformat。 入力:1番目のパラメーターは、元のformatメソッドと同様に、「Format」文字列になります。2番目のパラメーターは、解析された文字列になります(以下の例を参照)。他のパラメーターは不要であり、許可されていません。 出力:形式のプレースホルダーに対応して抽出された値の配列(または選択した言語に相当するもの)。 プレースホルダーです{0}、{1}、{2}、など 不正な形式の場合、エラーをスローしたり、好きなものを返したりすることがあります。 無効な入力の場合、エラーをスローするか、好きなものを返します。無効な入力は、同じフォーマット文字列を使用してString.Formatで生成できないようなものです'{0}{0}', 'AAB'。例:。 例 deformat('{0} {1}', 'hello world') => ['hello', 'world'] deformat('http{0}://', 'https://') => ['s'] deformat('http{0}://', 'http://') => [''] // array of one item which is an empty string deformat('{0}{1}{0}', 'ABBA') => ['A', 'BB'] あいまいさ あいまいな場合は、適切な回答を返すことができます。例えば: deformat('{0} {1}', 'Edsger W. Dijkstra') // …
13 code-golf  string 

8
中心二項係数の数字の合計
タスクは、Pythonの組み込み関数よりもnを(nでも)nを選択して計算できる速度を確認することです。もちろん、nが大きい場合、これはかなり大きい数値なので、整数を出力するのではなく、桁の合計を出力する必要があります。たとえば、のn = 100000場合、答えは135702です。n=1000000それがあります1354815。 Pythonコードは次のとおりです。 from scipy.misc import comb def sum_digits(n): r = 0 while n: r, n = r + n % 10, n / 10 return r sum_digits(comb(n,n/2,exact=True)) あなたのスコアは (highest n on your machine using your code)/(highest n on your machine using my code)です。コードは60秒以内に終了する必要があります。 プログラムは、すべての偶数nに対して正しい出力を提供する必要があります。2<= n <=(最高のn) すぐに二項係数に変換できる二項係数または値を計算する組み込みコードまたはライブラリを使用することはできません。 任意の言語を使用できます。 …

10
四元数の乗算
2つの四元数の四元数積を計算する名前付き関数またはプログラムを作成します。できるだけ少ないバイトを使用してください。 四元数 四元数は、複素数をさらに拡張する実数の拡張です。i四元数は、単一の虚数単位ではなくi,j,k、関係を満たす3つの虚数単位を使用します。 i*i = j*j = k*k = -1 i*j = k j*i = -k j*k = i k*j = -i k*i = j i*k = -j (Wikipediaページにもこれらの表があります。) 言い換えると、各虚数単位はに2乗し-1、2つの異なる虚数単位の積は残りの3番目の単位であり+/-、循環次数(i,j,k)が尊重されるかどうかに依存します(つまり、右手則)。したがって、乗算の順序が重要です。 一般的なクォータニオンは、実数部と3つの虚数単位の線形結合です。したがって、4つの実数で記述されます(a,b,c,d)。 x = a + b*i + c*j + d*k そのため、分配プロパティを使用して2つのクォータニオンを乗算し、正しい順序で単位を乗算するように注意し、結果で類似の用語をグループ化できます。 (a + b*i + c*j + d*k) * (e …

1
クーリエセプション
クーリエセプション プログラムは、入力として任意の文字列を受け入れ、Courierで入力文字列を示すピクセル画像を出力する必要があります。abdegopqABDPQR黒のピクセルで囲まれた「穴」などのすべての文字も黒で塗りつぶす必要があります。 入力 プログラムは、任意のASCII文字列を入力として受け入れられる必要があります。別の入力を受け入れるためにプログラムコード自体を変更する必要がない限り、入力は任意の方法にできます。(たとえば、読み取られるファイルのファイル名を除く。)標準的な抜け穴はありません。各入力には少なくとも1つの印刷可能な文字が含まれていると想定できます。 出力 出力は、指定された「穴」が埋められたCourierで記述された文字列(黒、背景白)を示す白黒(グレーなし)ピクセルグラフィックでなければなりません。文字列全体のフォントサイズは一定である必要があり(つまり、異なる文字ごとに異なるスケーリングがないことを意味します)、フルサイズの文字(たとえばABCDEFGHIJKLMNOPRSTUVWXYZjとQは大きい)の高さは少なくとも10pxでなければなりません。(ファイルに書き込む必要はありません。JavaScriptのキャンバスなどのピクセルグラフィックとして生成される限り、どんな種類の表示でも構いません。)このグラフィックを回答と共に投稿してください。 courier.ttf /フォントライブラリへのアクセスが許可されています。 プログラムは、黒ピクセルの数もカウントして、コンソールまたは最終的に望ましい出力方法を書き込む必要があります。 スコア スコアは次のように評価されます。完全なプログラムコードは、プログラムへの入力文字列として使用する必要があります。黒いピクセルの数がスコアになります。印刷不能または非ASCII文字を含むプログラムコードは許可されません。(標準の抜け穴と同様に。)スコアが低いほど良い。

1
花火の融合
概要 花火a-zと時間のリストが与えられた3-78たら、正しい時間にそれらがすべて点灯するように、ヒューズでそれらを配置します。 入力の行は、スペースで区切られた文字と数字として与えられます。 a 3 b 6 c 6 d 8 e 9 f 9 その一例を示している花火のa時の光の必要性3、bおよびc両方で6、dで8、とeとfの両方で9。各行は1つのマップに対応しています。 出力は、シンボルを使用した各ラインのヒューズ/花火マップです |-をヒューズを表示し、文字を花火を表示します。 -ヒューズは、その左/右のヒューズと花火に直接|接続し、ヒューズは上/下のヒューズと接続します。例えば、ヒューズは||されない接続され、-| あります。 たとえば、上記に対する2つの可能な答えは次のとおりです。 ---a ---------f | ||| || |-c ||| de --|--d a|| | b | |c f e b すべてのヒューズマップは-、左上隅のシングルから開始する必要があります。それが、ヒューズを点灯するポイントです。ヒューズの各文字は、焼くのに1秒かかります。ご覧のとおりa、両方の図で3秒で到達しますが、b、6。 さて、上記の両方のマップは、指定された入力に対して有効ですが、明らかに効率的なマップの1つです。左側のヒューズは13ユニットのみ使用し、右側のヒューズは20ユニット使用します。 ヒューズは花火で燃えません!したがって、inputのa 3 b 5場合、これは無効です。 ---a--b チャレンジ 目標は、すべてのテストケースで使用されるヒューズの量を最小限にすることです。スコアリングは非常に単純で、使用されるヒューズの合計単位です。 できない場合、それは不可能だ場合かどうか、テストケースのためのマップを作成、その場合のスコアは常に(上記の例のための41)の和です。 同点の場合、最もコンパクトなマップが勝つようにスコアリングが修正されます。タイブレークスコアは面積です各マップの境界ボックスのです。つまり、最も長い行の長さに行数を掛けたものです。「不可能」マップの場合、これは最大数の二乗です(上記の例では81)。 提出物がこれらのスコアリング方法の両方を結びつける場合、その結びつきは以前のエントリー/編集に行きます。 …

8
あなたの星座は何ですか?
生年月日(月と日)を入力として、対応する記号、要素、西部星座の質を出力するプログラムを作成します。この課題のために、これらはリンクされたウィキペディアのページの表とまったく同じように定義されています。 Sign Date Range Element Quality Aries March 21 to April 19 Fire Cardinal Taurus April 20 to May 20 Earth Fixed Gemini May 21 to June 21 Air Mutable Cancer June 22 to July 22 Water Cardinal Leo July 23 to August 22 Fire Fixed Virgo August 23 to …

2
内省的プログラミング:ソースと出力を分析するコード
文字の総数と、ソースおよび出力内の各文字の頻度を出力するプログラムを作成します。例に示されている形式に従う必要があります。 例 あなたのコードが abb1 その出力は My source has 4 characters. 1 is "a" 2 are "b" 1 is "1" Besides unquoted numbers, my output has 383 characters. 34 are " " 79 are " " 63 are """ 2 are "'" 2 are "," 4 are "." 2 are "1" …
13 code-golf  quine 

6
PIウィンドウ暗号化
これは、PI数字を使用してメッセージをエンコードする単純な暗号化方法です。この方法は単純です。 キーは、ウィンドウの開始位置を示す正の整数です。 スペースを含まない小文字のみを含む暗号化する文字列を指定すると、その長さを取得し、PIのN番目の数字を見つけて、数字で示された量だけすべての文字を右にシフトします。 たとえば、キーがで2、エンコードするhouse場合、2番目のキーから5桁のウィンドウを取得します。14159その後、次のようになります。 h -> i o -> s u -> v s -> x e -> n a。-プログラム/関数/アルゴリズムは2つのパラメーターを受け取ります。1つはスペースを含まない小文字とキーのみで構成される文字列で、1(1は3を参照)と1000の間の正の整数になります。以下の理由で、上記の精度でPIを計算するのにどれくらいの時間がかかるかよくわかりません。 b.-コード内でPIを自分で計算する必要があります。これは、Pi Dayと比較するためのきちんとしたWebページです。入力では、1000桁を超えるPIを計算することはありません。つまり、length(message)+ key <= 1000です。 Piを計算することにより、コード内でそれをハーコードしたり(コードゴルフのような)、コードに埋め込まれた定数を使用したり、三角関数のID(2 * acos(0))やWeb参照を使用したりしません。 c.-出力は暗号化された文字列になります。 これはコードゴルフの質問です。短いコードが勝ちます! 2014年7月14日に受賞の回答を受け入れます。
13 code-golf  pi 

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