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

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

7
コードゴルファーを書く[非公開]
あなたの仕事は、拒否しないことを選択した場合、選択した言語で特定のコードを「ゴルフ」するプログラムを書くことです。 基本機能: 余分な空白を削除する コメントを削除 「高度な」機能: コンバイン宣言(int x; int y; int z;へint x, y, z;) 基本制御構造の短いバリエーションを使用します(while(1)に置き換えられますfor(;;)) コードを(i = 0; while(i < 10) { /* ... */ ++i; }にfor(i = 0; i < 10; ++i) { /* ... */ })移動します 等

11
ミンスキーレジスターマシンのシミュレーション(I)
多くの形式がありますので、他の情報源が役立つと思うかもしれませんが、それらが必要でないように十分明確に指定したいと思います。 RMは、有限状態マシンと有限数の名前付きレジスタで構成され、各レジスタには非負の整数が保持されます。テキスト入力を簡単にするために、このタスクでは状態にも名前を付ける必要があります。 状態には3つのタイプがあります。増分と減分です。どちらも特定のレジスタを参照します。そして終了します。インクリメント状態はレジスタをインクリメントし、制御を1つの後続に渡します。デクリメント状態には2つの後続操作があります。レジスタがゼロ以外の場合、デクリメントして最初の後続操作に制御を渡します。それ以外の場合(つまり、レジスターがゼロ)、制御を2番目の後続に単純に渡します。 プログラミング言語としての「ナイスネス」の場合、終了状態はハードコードされた文字列を使用して印刷します(したがって、例外終了を示すことができます)。 入力は標準入力からです。入力形式は、状態ごとに1行で構成され、その後に初期レジスタの内容が続きます。最初の行は初期状態です。状態ラインのBNFは次のとおりです。 line ::= inc_line | dec_line inc_line ::= label ' : ' reg_name ' + ' state_name dec_line ::= label ' : ' reg_name ' - ' state_name ' ' state_name state_name ::= label | '"' message '"' label ::= identifier reg_name ::= identifier 識別子とメッセージの定義にはある程度の柔軟性があります。あなたのプログラムがなければなりません識別子として非空の英数字の文字列を受け入れ、それが可能あなたが好む場合(例えばアンダースコアと言語のサポート識別子あればそれと仕事へのあなたのために簡単です)、より一般的な文字列を受け入れます。同様に、メッセージでは、英数字とスペースの空でない文字列を受け入れる必要がありますが、必要に応じて、エスケープされた改行と二重引用符文字を許可するより複雑な文字列を受け入れることができます。 入力の最終行は、初期レジスタ値を提供し、空白で区切られたidentifier …

30
テキスト内の単語を数えて表示する
コードはテキストを入力する必要があります(ファイル、標準入力、JavaScriptの文字列などは必須ではありません): This is a text and a number: 31. 出力には、出現回数で降順でソートされた単語が含まれている必要があります。 a:2 and:1 is:1 number:1 This:1 text:1 31:1 31は単語であるため、単語は英数字であり、数値は区切り文字として機能しないため、たとえば0xAF、単語として修飾されます。区切り文字は.、-(ドット)や(ハイフン)を含む英数字ではないもの、つまり2語i.e.またはpick-me-up3語になります。大文字と小文字を区別しなければならない、Thisそしてthis二つの異なる単語であろう、 'またようにセパレータであろうwouldnとtの2つの異なる単語であろうwouldn't。 選択した言語で最短のコードを記述します。 これまでの最短正解: grepおよびcoreutils-42バイト
26 code-golf 

30
クリスマスツリーを印刷する
チャレンジ 最短のコードを使用して、上部に星印を付けた素敵なクリスマスツリーを印刷します。ツリーの星はアスタリスク(*)で、ツリーの本体はで作られてい0ます。ツリーの高さは10行でなければなりません。すべての行は、前の行が次の行の中央にくるように適切にインデントする必要があります。最初の行が星で、2番目の行が1つだけである場合を除いて、指定された行には前の行よりも2多い0が必要です。結果は次のようになります。 * 0 000 00000 0000000 000000000 00000000000 0000000000000 000000000000000 00000000000000000 ソフトウェアを変更せずにサイズ変更可能な高さツリーのタイブレーク(高さパラメーターの変更を除く) 作成したコードのツリーも貼り付けてください! リーダーボード コードスニペットを表示 var QUESTION_ID=4114,OVERRIDE_USER=73772;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"https://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a=r.match(SCORE_REG);a&&e.push({user:getAuthorName(s),size:+a[2],language:a[1],link:s.share_link})}),e.sort(function(e,s){var r=e.size,a=s.size;return r-a});var s={},r=1,a=null,n=1;e.forEach(function(e){e.size!=a&&(n=r),a=e.size,++r;var t=jQuery("#answer-template").html();t=t.replace("{{PLACE}}",n+".").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SIZE}}",e.size).replace("{{LINK}}",e.link),t=jQuery(t),jQuery("#answers").append(t);var o=e.language;/<a/.test(o)&&(o=jQuery(o).text()),s[o]=s[o]||{lang:e.language,user:e.user,size:e.size,link:e.link}});var t=[];for(var o in s)s.hasOwnProperty(o)&&t.push(s[o]);t.sort(function(e,s){return e.lang>s.lang?1:e.lang<s.lang?-1:0});for(var c=0;c<t.length;++c){var i=jQuery("#language-template").html(),o=t[c];i=i.replace("{{LANGUAGE}}",o.lang).replace("{{NAME}}",o.user).replace("{{SIZE}}",o.size).replace("{{LINK}}",o.link),i=jQuery(i),jQuery("#languages").append(i)}}var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk",answers=[],answers_hash,answer_ids,answer_page=1,more_answers=!0,comment_page;getAnswers();var SCORE_REG=/<h\d>\s*([^\n,]*[^\s,]),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/,OVERRIDE_REG=/^Override\s*header:\s*/i; body{text-align:left!important}#answer-list,#language-list{padding:10px;width:290px;float:left}table thead{font-weight:700}table td{padding:5px} <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <link rel="stylesheet" …

19
私の言葉はあなたの言葉を打ち負かすことができます
問題 2つの単語が与えられたら、デジタルルートバトルで勝者を見つけます。 この方法で単語のデジタルルートを定義します。 アルファベットの各文字には番号が割り当てられます: A = 1、B = 2、C = 3、...、Z = 26 各文字の値を追加して、単語を合計します。たとえば、「CAT」を使用します。C + A + T = 3 + 1 + 20 = 24 その結果を構成するすべての1桁を追加します。24=> 2 + 4 = 6 1桁に達するまで手順3を繰り返します。その1桁が単語のデジタルルートです。 ルール: デジタルルートが他のルートよりも大きい場合、勝者が宣言されます。 場合デジタルルート値が等しい、単語および再計算の両方から最高値の文字のすべてのインスタンスを除去することにより、単語を短縮します。 勝者が現れるまで、または単語の1つに文字が1つしか残っていない(または文字が残っていない)まで、手順1と2を繰り返します。 短縮プロセスを経た後、デジタルルート値が等しい場合、長い単語が勝者として宣言されます。 単語が同じ長さで、短縮プロセスを行った後に勝者が見つからない場合、勝者は宣言されません。 特別なルール: デジタルルート自体の計算では、モジュラスの使用は許可されません。他のどこでも使用できます。 単語は大文字のみで構成されていると仮定します-句読点やスペースなどは使用できません 入力 標準入力(コンマ区切り)を使用して単語を取り込みます。メソッドパラメータ、または必要に応じて。ソリューションまたはコードで、単語の解析または準備方法を明確にします。 出力 勝った言葉を表示します。勝者がいない場合は、「STALEMATE」と表示します。 例: 入力:CAN、BAT CAN = …

2
ニューラルネットワークは素数を認識できますか?
バックグラウンド 素数性の認識は、(人工)ニューラルネットワークにはあまり適していないと思われます。ただし、普遍近似定理では、ニューラルネットワークは任意の連続関数を近似できるため、特に、希望する有限サポート関数を表すことができるはずです。それで、最初の100万の数の中のすべての素数を認識してみましょう。 より正確には、これはプログラミングWebサイトであるため、2 ^ 20 = 1,048,576まで進みましょう。このしきい値を下回る素数の数は82,025または約8%です。 チャレンジ すべての20ビット整数を素数または素数として正しく分類できるニューラルネットワークはどれくらい小さいでしょうか? この課題のために、ニューラルネットワークのサイズは、それを表現するために必要な重みとバイアスの総数です。 詳細 目標は、単一の明示的なニューラルネットワークのサイズを最小化することです。 ネットワークへの入力は、整数の個々のビットを含む長さ20のベクトルになり、0と1で表されるか、-1と+1で表されます。これらの順序は、最上位ビットが先か、最下位ビットが先です。 ネットワークの出力は単一の数値である必要があります。これにより、カットオフ値を超えると入力が素数として認識され、同じカットオフ値を下回ると入力が素数でないと認識されます。たとえば、正は素数を意味し(負ではなく負)、あるいは0.5より大きい場合は素数を意味します(そして0.5未満は素数ではありません)。 ネットワークは、すべての2 ^ 20 = 1,048,576の入力で100%正確でなければなりません。上記のように、この範囲には82,025個の素数があることに注意してください。(常に「素数ではない」を出力すると、92%正確になります。) 標準的なニューラルネットワークの用語では、これはおそらくオーバーフィッティングと呼ばれます。言い換えれば、あなたの目標は素数を完全に過剰適合させることです。他の言葉としては、「トレーニングセット」と「テストセット」が同じであることです。 この課題では、「トレーニング可能な」または「学習可能な」パラメータの数は考慮されていません。実際、ネットワークにはハードコーディングされた重みが含まれている可能性が高く、以下の例は完全にハードコーディングされています。代わりに、すべての重みとバイアスがパラメーターと見なされ、カウントされます。 ニューラルネットワークをトレーニングまたは生成するために必要なコードの長さはスコアに関係ありませんが、関連するコードを投稿することは確かにありがたいです。 ベースライン ベースラインとして、82,025個のすべての素数を1,804,551個の合計重みとバイアスで「記憶」することができます。 以下のこのコードには、実例、テストコード、既知のニューラルネットワークライブラリを使用したニューラルネットワークの動作定義、「ハードコード」(または少なくとも「トレーニングされていない」)ニューラルネットワーク、スコアの実際の測定。 import numpy as np bits = 20 from keras.models import Sequential from keras.layers import Dense from sympy import isprime # Hardcode some weights weights = …

15
いくつかのビットを切り替えて、正方形を取得します
整数与えられた場合、を反転して正方数に変換する必要がある最小ビット数を見つける必要があります。最上位ビットより下のビットのみを反転できます。NN> 3N>3N>3NNN 例 2 2 0N= 4N=4N=4すでに平方数()であるため、期待される出力はです。22222^2000 11000 → 1100 1 25 = 5 2 1N= 24N=24N=24は、1ビットを反転することにより2進数に変換できます:()。したがって、期待される出力はです。11000 → 1100 111000→1100111000 \rightarrow 1100\color{red}125 = 5225=5225=5^2111 23 20 18 30 10110 → 10 0 0 0 16 = 4 2 2N= 22N=22N=22単一のビットを反転させ平方数に変えることができない(可能な結果がある、、及び)が、2ビット反転させることによって行うことができる:()。したがって、期待される出力はです。23232320202018181830303010110 → 10 0 0 010110→1000010110 \rightarrow 10\color{red}0\color{red}0016 = 4216=4216=4^2222 ルール …

10
404-一意の404ページが見つかりません
Stack Overflow 404ページの多言語 に触発された: ゴール あなたの目標は、数404を出力するポリグロットを作成し、できるだけ多くの言語で終了することです。 制限事項 ここにひねりがあります、それを難し​​くする制限があります: N個のプログラムを作成し、特定の順序でN個の言語を選択する必要があります。私は番目のプログラムは、印刷する必要が404最初に私の後の言語ではなく、任意の言語でI番目。これは、非常に単純なソリューションが競争を破壊するのを防ぐためです。 得点: 勝者を決定する最初の基準は、メインプログラムが実行される言語の数です。 2番目の基準はバイト数です。この基準では、より多くの言語のプログラムがより重要になります。 3番目の最後の基準は提出の時間です 明確化: プログラムのソースコードは、関係を持つ必要はありません。これらは個別のプログラムとして実行されます。どのプログラムでも、末尾および/または先頭の空白を出力できます。このプログラムは、他のプログラムの結果である必要はありません! より良い説明をしてくれた@MartinEnderに感謝します!

6
テキストのブロックを完全に正当化およびハイフネーションする
Given a width and a block of text containing possible hyphen- ation points, format it fully- justified (in monospace). 完全に両端揃えとは、左右に揃えられ、各行が収まるまで単語間の間隔を広げることで実現されます。 関連: スペースを追加してテキストを揃える テキストをブロックに揃える ある意味では、これはテキスト処理#1の次のステップと見なすことができます:ハイフネーション(投稿されたことはないようです)。 入力 任意の形式で入力できます。あなたが与えられます: ターゲットの幅(文字数)、範囲5〜100(両端を含む)。 ハイフネーションされた可能性のある単語を含むテキストブロック。これは、スペースで区切られた文字列、単語の配列、または単語の断片の配列の配列(または必要な他のデータ表現)である可能性があります。 一般的な入力は次のとおりです。 Width: 25 Text: There's no bu-si-ne-ss lik-e s-h-o-w busine-ss, n-o bus-iness I know. ここで、ハイフンは可能なハイフネーションポイントを示し、スペースは単語の境界を示します。テキストの可能な代替表現: [["There's"], ["no"], ["bu", "si", "ne", "ss"], ["lik", …

12
埋め込みダイヤモンド!
いいえ、これではありません。これでもありません。この質問はそれらのようなものではありません 次の出力を印刷または返すための最短のコードを記述します。 /\ /\ /\ / \ / \ / \ / /\ \ / /\ \ / /\ \ / / \ \/ / \ \/ / \ \ \ \ / /\ \ / /\ \ / / \ \/ / \ \/ / \ \/ / \ …

5
王はポーンをキャッチできますか?
4つの整数x 1、y 1、 x 2、およびy 2の入力が与えられると、チェスの白い王(座標(x 1、 y 1)を持つ)が黒いポーン(座標(x 2、 yを持つ)2))ポーンが可能な限り速く女王に昇格するように動いている場合、それをキャプチャします。 ボードの座標は次のとおりです。 first coordinate (x) 12345678 1 .#.#.#.# 2 #.#.#.#. 3 .#.#.#.# second 4 #.#.#.#. coordinate 5 .#.#.#.# (y) 6 #.#.#.#. 7 .#.#.#.# 8 #.#.#.#. 移動するのは白であり(キングのターン)、両方のプレイヤーが最適にプレイすると仮定します(キングはポーンをキャッチするためにできるだけ速く移動し、ポーンはプロモートするためにできるだけ速く移動します)。入力座標は常に区別され、ポーンは8のy座標で開始することはありません。 キングはターンごとに任意の方向に1つの正方形を移動し(斜めに移動できます)、ポーンは初期位置(座標系、y座標の場合)でない限り、1スペースだけ前方に移動(y座標を減少)できます7)、この場合、2つのスペースを前方に移動できます。 入力は、空白/コンマ区切りの文字列、文字列/整数の配列、または4つの関数/コマンドライン/その他の引数として指定できます。座標は、最も便利/ゴルフ好きな順序で与えることができます(したがって、[y 2、y 1、x 1、y 2 ] として入力を受け入れても、一貫していれば問題ありません)。出力は、真偽値である必要があります。 これはcode-golfであるため、バイト単位の最短コードが優先されます。 真実のテストケース: 5 3 3 2 …
26 code-golf  chess 

10
連鎖プログラム
チャレンジ この課題では、プログラムの無限シーケンスの最初のプログラムp 1を作成します。このプログラムでは、p nを実行するとプログラムp n + 1が出力/生成されます。最初のn> = 2プログラムを連結する場合、シーケンスはを出力する必要がありますn。 例 最初の4つのプログラムは次のとおりです。 p1 p2 p3 p4 私が実行した場合p1、出力されるはずです: p2 私が実行した場合p1p2、出力されるはずです: 2 私が実行p1p2p3p4した場合、出力されるはずです: 4 を実行するp4と、シーケンス内の次のプログラムが生成されます。 p5 得点 スコアは、最初の10プログラムのバイト数です。

7
0815インタープリターを書く
作成者のWebサイトのインタープリターがエラー404を返すことを除いて、私は0815の概念が好きです。だから私は皆さんに助けを求めることにしました! 基礎 0815は、3つのレジスタと1つのキューに基づいています。レジスタにはX、Y、Zという名前が付けられ、Xは書き込み専用、Zは読み取り専用、Yは直接アクセスできない「ヘルパー」レジスタです。すべてのレジスタは、0に設定されて開始されます。すべての数値は16進数です。 説明書 注:一部の命令は、パラメーターの}:hello:場所のようにフォーマットされ:hello:たパラメーターを使用します。その他の注意:命令の説明のいくつかは不明瞭なので、私はそれらにいくつかの自由を取りました。(ここに元の指示) ~ パラメータが必須であることを意味します ----------|---|-------------------------------------------- ~Move | < | <:8: will write 8 to X (parameter required) ----------|---|-------------------------------------------- Swap | x | Swap X and Y ----------|---|-------------------------------------------- ~Label | } | }:hello: makes a label called 'hello' ----------|---|-------------------------------------------- Input | | | Set X to an integer …

12
TI-BASICでのゴルフのヒント
TI-83 / 84 +シリーズ電卓用のTI-BASICでゴルフをするための一般的なヒントは何ですか?コードゴルフの問題に適用でき、TI-BASICに少なくともある程度固有のアイデアを探しています(たとえば、「コメントの削除」は答えではありません)。 回答ごとに1つのヒントを投稿してください。
26 code-golf  tips  basic 

19
クラウン百王冠
私は、特定のゲームが独特のライフカウンターを持っていた気づいたの代わりに停車の999次の番号だった- 、新しい数字を獲得したクラウン百か👑00。後に👑99来たクラウン百crownty(👑👑0)と最後の番号は、後に👑👑9、だったクラウン百crowntyクラウンや👑👑👑小数で1110年になり、。 あなたの仕事は、このカウンタを出力するプログラムまたは関数を書くことです。 範囲の整数[0,1110](両端を含む)を指定すると、3文字の文字列が出力されます。 すべてのキャラクターはリストからのものです 0123456789👑 クラウン(👑)は、左端のキャラクターとして、またはその左側にクラウンがある場合にのみ表示できます この数が10進数として読み取られるが、クラウンがとしてカウントされる10場合、元の数に戻ります テストケース 0 → "000" 15 → "015" 179 → "179" 999 → "999" 1000 → "👑00" 1097 → "👑97" 1100 → "👑👑0" 1108 → "👑👑8" 1110 → "👑👑👑" クラウンの代わりに10進数以外の文字を使用できます。きれいに印刷するために、クラウン文字(UTF8バイトシーケンス "\ 240 \ 159 \ 145 \ 145")は4バイトではなく1バイトとしてカウントされます。プログラムは、有効範囲外の数値に対して機能する必要はありません。 これはcode-golfであるため、バイト単位で測定した最短回答が勝ちです!

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