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

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

8
銀行でのゴルフ
新しい銀行には窓口取引システムが必要ですが、問題があります。サーバーに残っているスペースは数百バイトしかないため、非常にコンパクトなコードを書く必要があります。 データベース ありがたいことに、私たちのデータベースは非常にシンプルで(銀行の社長の息子が作成しました)、現在のところ少数の顧客しかいません。 ファイルBank.dataは: Account Firstname Lastname Balance Date 123 Maree Jones 346.22 2014-12-13 035 Thomas Breakbone 3422.02 2015-01-03 422 Henrietta Throsby-Borashenko 277847.74 2014-11-21 501 Timmy Bongo 7.95 2014-11-04 105 William Greene 893.00 2015-01-06 300 Mary Galoway 1228.73 2014-12-28 203 Samantha Richardson 2055.44 2014-11-01 151 Bruce Wayne 956119.66 2014-10-09 166 …
11 code-golf 

7
最長逆パリンドロームDNAサブストリング
ご存知かもしれませんが、DNAには4つの塩基があります—アデニン(A)、シトシン(C)、グアニン(G)およびチミン(T)。通常A、TとC結合しG、と結合して、DNA二重らせん構造の「ラング」を形成します。 塩基の補数を、結合する塩基と定義します。つまり、Ais Tの補数、Tis Aの補数、Cis Gの補数、Gis の補数ですC。また、DNA文字列の補数を、各塩基が補われた文字列、たとえばGATATCis の補数として定義することもできますCTATAG。 DNAの二本鎖構造のため、一方の鎖の塩基はもう一方の鎖の塩基と相補的です。しかし、DNAには方向があり、DNA転写は2本の鎖で反対方向に起こります。そのため、分子生物学者はDNAストリングの逆相補性に興味を持っていることがよくあります。文字列の相補性の逆です。 前の例を拡張するために、の逆の補数GATATCはCTATAG後方GATATCです。お気づきかもしれませんが、この例では、逆の補数は元の文字列と同じです。このような文字列を逆回文と呼びます。* DNAの文字列が与えられた場合、逆パリンドロームである最も長い部分文字列を見つけることができますか? *私は、パリンドロームの通常の意味と区別するために、ロザリンドから取られた「逆パリンドローム」という用語を使用します。 入力 入力はACGT、大文字の文字のみで構成される単一の文字列になります。このチャレンジのために、関数または完全なプログラムを作成できます。 出力 印刷または戻ることで出力することを選択できます(後者の選択は、関数の場合にのみ使用可能です)。 一意の解決策がある場合、プログラムは入力文字列の最長の逆パリンドローム部分文字列を出力する必要があります。複数のソリューションが存在する場合、それらのいずれか1つを出力することも、すべてを選択することもできます(選択)。すべてを出力することを選択した場合、複製は問題ありません。 入力には、少なくとも長さ2の解があることが保証されています。 実施例 ATGGATCCG -> GGATCC の逆補体GGATCCはそれ自体(GGATCC --complement--> CCTAGG --reverse--> GGATCC)でGGATCCあり、逆パリンドロームも同様です。GATC逆パリンドームでもありますが、最長のものではありません。 テストケース AT -> AT CGT -> CG AGCA -> GC GATTACA -> AT, TA ATGGATCCG -> GGATCC CCCCCGGGGG -> CCCCCGGGGG ACATATATAGACT -> ATATAT, TATATA …

2
スリ・ヤントラを描く
チャレンジ: Sri Yantraを描きます。 方法: それを描くにはさまざまな方法があります。すべてに多くのステップが含まれています。リンクされた手順に従わずに描画できると思われる場合は、下にスクロールして、描画に必要な要素を探します。 完全な手順は次の場所にあります。 http://www.saralhindi.com/Shri_Yantra/makingsky14steps_eng.htm (それは非常に長い質問になってしまうので、私はそれらをここにコピーされていなかった、ここで最初のリンクが今までダウンした場合にはarchieve.orgミラー) 最終的な写真は次の図のようになります。 持つ必要があります: 基本的に、選択した描画方法はすべて、最も重要な要素を保持していれば有効な答えになります 三角形の数は、上の図と同じ数にする必要があります(43個の小さな三角形は、大きな9個の三角形のインターレースから生じました) この三重交差点は尊重されます。 下図に示すように、上向き三角形の先端は4つの下向き三角形の底辺に接触し、下向き三角形の先端は3つの上向き三角形の底辺に接触します。 内側の円(bindu)は外側の円と同心です。 大きな三角形の先端(頂点)は、外側の円に触れる必要があります。 最終画像にはすべての要素が含まれている必要があり、一般的に次のようになります。 色は、すべての要素(花びらを含む)で上記の画像とほぼ同じである必要があります。 花びらの形状は、おおむね以下の画像のように見える必要がありますが、単なる半円または円の単純な円弧セクションにすることもできます。 円またはゲートのサイズに厳密な比率の制限はありませんが、最も外側の円の直径は外側の正方形の辺の90%以上である必要があり、他の要素はこの比率に対してそれぞれ配置されます。 プログラミング言語と結果 結果が比較的明確で識別可能であれば(少なくとも800px X 800px)、プログラミング言語や結果の形式(ベクター画像、ビットマップ画像、キャンバスなど)に制限はありません。 後者の編集: このブログではそれらを詳しく調査しているため、完璧な描画方法はありません 。 この時点で、円の二乗のように完璧な解決策はない可能性が非常に高いことを学ぶのは興味深い演習です。

1
旅行をクールに!
チャレンジ マークスとスペンサーを歩いていると、店の周りにエアコンユニットがランダムに配置されていることに気付きました。冷静を保ちたいと思った私は、エアコンユニットから離れすぎずに店全体を動き回る最も簡単な方法は何だろうと考えました。 マップが与えられたら、エアコンユニットからの距離をできるだけ短く保ちながら、マップ全体を移動する方法を見つける必要があります(ACユニットが壁の反対側にある場合でも)。 地図 マップは任意の方法で提供でき、次の記号を使用します。 + is a corner of a wall | is a east/west facing wall - is a north/south facing wall X is an air conditioning unit S is the start and end point マップの例は次のとおりです。 +------S---+ | X | | ---+-+ X | | |X| | | …

5
一般化されたGematria計算機
Unicode文字の任意のシーケンスをアルファベットとして、双方向Gematria計算機を作成します。 Gematri-What? Gematriaは、古代ギリシャ人によって開発され、古代ユダヤ人によって採用された、シンボルに数値を割り当てるシステムです。ASCIIやUnicodeのような方法で、単に非線形です...次の表をご覧ください(完全な表は上記のリンクから入手できます): Index Letter Letter name Value -------------------------- 0 א "Alef" 1 1 ב "Bet" 2 ... 8 ט "Tet" 9 9 י "Yud" 10 10 כ "Kaf" 20 ... 17 צ "Tsady" 90 18 ' "Kuf" 100 19 ר "Resh" 200 ... 文字の名前は重要ではなく、アルファベットの「配列」内のインデックスとそれぞれの数値のみが重要です。ヘブライ語のアルファベットの文字数は22文字(「最終」文字を除く)であるため、使用可能な最大値は400です。 このシステムを英語のアルファベット(AZ)に借用すると、A = 1、B = 2 …


8
実用的なゴルフ-米国[終了]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新することがありますので、上のトピックコードゴルフスタックExchange用。 5年前に閉鎖されました。 私の家族は電子商取引を営んでいます。私たちのサイトでは、住所を入力するときにドロップダウンメニューから状態を選択するように人々に強制しますが、私たちが使用する他のチャネルを通じて、顧客はボックスに好きなものを入力できます。 お母さんは、自動で生成される請求書テンプレートを気に入っています。しかし、彼らはとてもきれいでバランスが取れているので、人々が州の名前を書き上げたり、さらに悪いことに「ニュージャージー」のようなものを書いたりするとき、彼女は我慢できません。彼女はそれが外観を台無しにするという。 父はコードが軽量であることを好みます。そのため、スイッチケースブロックを使用するのではなく、よりスリムなソリューションを求めています。 そのため、課題は、可能な入力を取り、2文字の略語を返す短い関数を作成することです(ママの場合は大文字)。ユーザーが名前にスペルを入れて常にスペースを入れる(必要な場合)か、正しい省略形を渡すことができるという(誤った)仮定を行います。スコープは米国50州です。 ニューヨーク ニューヨーク NY ny ニューヨークの入力はすべて受け入れ可能で、NYを出力する必要があります。 New Yrokのようなものが渡されると、関数は元の値を返すことができます。 任意の共通言語を使用できます。これは人気コンテストなので、1週間の終わりに最も投票数の多いものが勝ちます。私はこれが目新しさと実用性を支持すると思います。 編集:説明は物語の綿毛ですが、私は同様のプロジェクトで働いていたので、もっと面白い方法が必要だと思いました。私は自分でプロジェクトを実行できます(すでに実行しました)が、これはより興味深い挑戦のための良い場所だと思いました。「すべての共通言語」では、この課題のために設計されたカスタム言語/ライブラリを除外していました。無料のコードヘルプではなく、新しい方法を探していました。ある時点で誰もがこれを行ったと思いますが、異常な方法でそれを行うのは楽しいでしょう。最も興味深いプロジェクトは、毎日のタスクに新しく興味深い方法で取り組むプロジェクトだと思います。だから、これはゴルフではなく人気コンテストです。

5
接線ポリゴン拡張
次のようなものを描きます。 より正確に言えば、半径rの円を描き、長さlのnの等間隔接線を描く。これらの線の端を接続して、新しいn辺の正多角形を形成します。 ルール r =円の半径 n =接線の数-円の周りに等間隔である必要がある(n> = 3) l =接線の辺の長さ 引数{r、n、l}を受け入れ、必要な出力を描画するプログラムを作成します。 単位はピクセルです。 図面がすべて表示されている限り、図面の場所に制限はありません。 写真は一目瞭然です。 これはコードゴルフなので、バイト単位の最短コードが勝ちです!

4
タイリング、頂点構成を指定
仕事 タスクは、頂点構成を指定して、ポリゴンをタイル表示することです。 得点 あなたのスコアはあなたの提出が到達する「複雑さのレベル」に等しい。複雑さのレベルは累積的です。つまり、#3に到達するには#1&#2もサポートする必要があります。 複雑度が同じレベルの送信は、バイトカウントによって区別されます。最低の勝利。 入力 入力は、頂点図形を表す頂点構成を含む文字列です。つまり、ドットで区切られた整数のリストです。各整数(n)は、共通の頂点で接続された通常のn角形を表します。 次の頂点構成をサポートする必要があります。 3.3.3.3.3.3 3.3.3.3.6 3.3.3.4.4 (順序は頂点の図に反映されるため、以下は異なります) 3.3.4.3.4 3.12.12 3.4.6.4 3.6.3.6 4.4.4.4 4.6.12 4.8.8 6.6.6 出力-複雑さレベル#1:頂点図 この複雑さのレベルでは、出力は、指定された入力に対応する頂点図形を示す画像です。 入力の先頭にを追加してF、完全なタイリングではなく、頂点の図を出力する必要があることを示します。 たとえば、F3.6.3.6次の頂点図を示します。 出力-複雑さレベル#2:タイリング この複雑度レベルの出力は、指定された入力に対応する頂点図形を使用した均一なタイリングを示す画像です。 たとえば、3.6.3.6次のタイリングを示します。 色や形式に制限はありません(抜け穴はありません)。 出力-複雑さレベル#3:デュアルタイリング この複雑さのレベルでは、各タイルから「デュアルタイル」を形成できます。これは、各ポリゴンの中心から各境界ポリゴンの中心まで線を引くことで実現されます。 デュアルタイリングは、入力の先頭にV。 たとえば、V3.6.3.6次の二重タイリング(赤)を示します。

4
パイを見つける5秒
パイ倍の電子 100の小数点以下の桁数に(またはパイあなたの曖昧な表記のような場合)は、次のとおりです。 8.5397342226735670654635508695465744950348885357651149618796011301792286111573308075725638697104739439... (OIES A019609)(非合理性の可能性に関する議論) あなたの仕事は、正の整数Nを取り、小数点以下N桁に切り捨てられたPi * eを出力するプログラムを書くことです。たとえば、N = 2の場合、出力はである必要があります8.53。 これは最適化の問題であるため、最高値のNに対して正しい出力を提供できるサブミッションが勝ちます。 すべての提出物が同じコンピューティングパワーを使用して判断されるようにするには、コードがサポートする言語を使用してideoneで実行する必要があります。ideone faqによると、ログインしていないユーザーには5秒の実行時間制限があります。この5秒の制限は、ログインするユーザーの15秒の制限ではなく、使用する必要がある制限です。(メモリ、コードサイズなどの他の制限については、よくある質問をご覧ください) 具体的には、ideoneにログインしていない人は、1から最大NmaxまでのNのすべての値に対してideoneでプログラムを実行でき、ほぼ常に正しい出力を確認できます。どのなしTime limit exceededかMemory limit exceeded、などのエラー。Nmaxが最大の提出が勝ちです。 (実際にかかった時間が5秒を超えるかどうかは、イデオンがエラーを出さない限り重要ではありません。「ほぼすべての時間」は、特定のNの95%以上の時間として定義されます。) 詳細 任意の数学的な方法を使用してPi * eを計算できますが、Pi、eまたはPi * eの最初の12桁を超えて出力をハードコーディングすることはできません。 リソースは無制限であれば、プログラムは任意のNで機能する必要があります。 あなたの言語がたまたま持っている場合は、組み込みのPiまたはe定数を使用できます。 コードの外部のWebサイトやリソースにアクセスすることはできません(これが許可されている場合)。 ハードコーディングと外部リソースへのアクセスを超えて、ideoneが許可するものはほぼ間違いなく問題ありません。 入力と出力は、(明らかに)ideoneがI / Oに提供するもの(stdin / stdoutのみ)で動作する必要があります。入力Nを引用符で囲む必要がある場合や、出力がans = ...などの場合は問題ありません。 Nmaxを入力として、コードのideoneスニペットへのリンクを含めてください。 同点が発生した場合(複数の送信が64kBの出力文字制限に達した場合のみ)、最高票の回答が勝ちます。

12
Piem Validatorプログラム
「ユーザーが望むものまたは入力したもの」という文字列変数がパイムかどうかをチェックできる関数を定義するプログラムを作成します。(piem =語長がπの数字を表すストーリーまたは詩(Wikipediaから)) いくつかの例: myfunction("I am clearly wrong") # False myfunction("How I want a drink, alcoholic of course, after the heavy lectures involving quantum mechanics") #True (Taken from Wikipedia) myfunction("Law ' s fine") # True 処理する前に、あらゆる種類の句読点または改行を削除する必要があります。純粋なコードゴルフ、最短の勝利 終了日:2014年1月10日の夕方 さまざまな答え 何桁処理する必要がありますか?10以上 関心事として、PIの0はどのように解釈されるべきですか?スキップまたは10文字の単語?10文字の言葉として 「piemと呼ばれる変数」–パラメータの名前はpiemでなければなりませんか?いいえ、質問テキストは修正されていません 楽しいボーナスはそれ自体が解決策である可能性がありますあなたの解決策が解決策である場合、* 0.5のボーナスが得られます 議論のために、_は常に句読点ですか?句読点かそうでないかを決めることができます 「あらゆる種類の句読点」が何を意味するのかは不明です、つまり、。 ''?!;;() 数字を数える必要がありますか?そして、法律の罰金は虚偽でしょうか?数字は文字として扱う必要があります。Law's fine = False; Law …
11 code-golf  pi 

1
Golfscript対角配列
Golfscriptで、配列のすべての対角線を単一の配列にする方法はありますか? たとえば、配列の場合 [[1 2 3][4 5 6][7 8 9]] 帰る [[7][4 8][1 5 9][2 6][3]] (必ずしもこの順序である必要はありません)および ["ABCD""EFGH""IJKL"] 帰る ["I""EJ""AFK""BGL""CH""D"] (必ずしもこの順序である必要はありません)。配列の長さが同じであると仮定します。 私はそれを理解するのに苦労しています。文字列のth文字を使用して=繰り返し処理を試みましたが、うまくいき(length+1)ませんでした。誰か助けてくれますか? 可能であれば、これを行う最短の方法が欲しいです。

1
フロッガーチャンピオン
ゲーム 私たちのほとんどは、Froggerについて知っています。これは、80年代のアーケードゲームで、目的は、忙しい高速道路とハザードで満たされた池を安全に渡って家に到着することです。 チャレンジが発行されたフロッガークローンを開発するために、いくつかのヶ月前。しかし、Froggerをプレイできるのに、なぜFroggerをクローンするのですか?:) 次の単純化された再生グリッドを検討してください。 XXXXXXXXXXXXXXXXXXXXXXX North Safe Zone ----------------------- | | <<<< Express Lane West (Lane 1) | | > Gridlock East (Lane 2) | | << Freeflowing Traffic West (Lane 3) | | < Gridlock West (Lane 4) | | >>>> Express Lane East (Lane 5) ----------------------- XXXXXXXXXXX@XXXXXXXXXXX South …

3
いくつかのリンゴを並べ替えます!
問題 7つのバケットが一列に並んでいると想像してください。各バケットには最大2つのリンゴを含めることができます。1〜13のラベルが付いた13個のリンゴがあります。これらは7つのバケットに分散されています。例えば、 {5,4}, {8,10}, {2,9}, {13,3}, {11,7}, {6,0}, {12,1} 0は空のスペースを表します。 各バケット内でリンゴが表示される順序は関係ありません(たとえば、{5,4}は{4,5}と同等です)。 目的のバケットに別のリンゴ用のスペースがある場合、リンゴをあるバケットから隣接するバケットに移動できます。各移動は、移動するリンゴの番号で記述されます(空のスペースが1つしかないため、明確です)。たとえば、移動を適用する 7 上記の配置の結果は {5,4}, {8,10}, {2,9}, {13,3}, {11,0}, {6,7}, {12,1} 目的 STDINからアレンジメントを読み取り、次のアレンジメントにソートするプログラムを作成します {1,2}, {3,4}, {5,6}, {7,8}, {9,10}, {11,12}, {13,0} できるだけ少ない動きを使用します。繰り返しますが、各バケット内でリンゴが表示される順序 は関係ありません。バケットの順序は重要です。コンマで区切られた各配置をソートするために使用される移動を出力する必要があります。例えば、 13, 7, 6, ... あなたのスコアは、次の取り決めを解決するために必要な移動の数の合計に等しくなります。 {8, 2}, {11, 13}, {3, 12}, {6, 10}, {4, 0}, {1, 7}, {9, …

26
文字列内のすべての数値をインクリメントします
10進数を含む文字列がある場合: teststring134this 123test string54 100 この文字列のすべての数値を1ずつインクリメントして、新しい文字列を提供します teststring135this 124test string55 101。 文字列は次のように提供できます。 コマンドライン引数 STDIN ハードコーディングされた変数または関数の引数 番号のすべての可能な位置をカバーします: 単語の接頭辞として。123test►124test 単語の接尾辞として。test123►test124 言葉の中 te123st►te124st 単独test 123 test►test 124 test Pythonのゴルフ以外のソ​​リューションを次に示します。 NUMBERS = '0123456789' def increment(s): out = '' number = '' for c in s: if c in NUMBERS: number += c else: if number …
11 code-golf  string 

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