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

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

30
開始は終了に等しいですか?
タスク この課題では、タスクは、文字列を取り込んで、入力文字列の最初の文字と最後の文字が等しいかどうかに基づいて真偽値を出力するプログラムまたは関数を作成することです。 入力 何らかの方法で合理的な方法で入力を受け付けます。ただし、入力が事前定義された変数に存在すると仮定することは許可されていません。ファイル、コンソール、コマンドライン、入力フィールドなどからの読み取り、または入力を関数の引数として使用できます。 出力 結果を変数に割り当てる場合を除き、妥当な形式で出力できます。ファイル、コンソール、コマンドライン、モーダルボックス、関数returnステートメントなどへの書き込みが許可されています。 追加の規則 入力は空の文字列にすることもできます。この場合、falsey値を返す必要があります。 単一文字の入力文字列には、真実の結果が必要です。 プログラムでは大文字と小文字を区別する必要があります。helloHfalsey値を出力する必要があります。 単一のTruthy値と単一のFalsey値のみを持つことができます。たとえばfalse、入力文字列および0別の入力文字列に対してFalsey値として出力することは許可されていません。 標準の抜け穴は許可されていません。 テストケース Input -> Output "10h01" Truthy "Nothing" Falsey "Acccca" Falsey "wow!" Falsey "wow" Truthy "H" Truthy "" Falsey これはcode-golfなので、バイト単位の最短コードが勝ちです!

30
除算と剰余
この課題は、ほとんどの「標準」言語ではおそらく些細なことですが、難解で、低レベルで、かつ/またはこのサイトではめったに見られない使用が難しい言語に対処します。解決する興味深い問題を提供するはずなので、これはあなたが読んだ奇妙な言語を試す機会です! タスク 2つの自然数aをb入力として受け取り、整数除算の結果とその除算a/bの剰余(a%b)の2つの他の数値を出力します。 これはコードゴルフです:各言語の最短回答(バイト単位)が勝ちます! 入出力 0 <= a<= 255、1 <= b<= 255。各入力(および出力)も1バイトに収まります。 2つの数値が明確に区別できる限り、入力と出力の両方に任意の形式を選択できます(たとえば、2つの結果を区切り文字なしで一緒に印刷しない) 例 a,b->division,remainder 5,7->0,5 5,1->5,0 18,4->4,2 255,25->10,5 注:除算の結果と残りの両方を返す組み込み関数は禁止されています。少なくとも、あなたの言語が同じ引数に2つの関数を適用する方法を示してください。 注2:いつものように、コードがどのように機能するかの説明は非常に歓迎されます。 リーダーボード これは、言語ごとに勝者の概要を生成するスタックスニペットです。 回答が表示されるようにするには、次のマークダウンテンプレートを使用して、見出しから回答を開始してください。 # Language Name, N bytes N提出物のサイズはどこですか。スコアを改善する場合、古いスコアを打つことで見出しに残すことができます。例えば: # Ruby, <s>104</s> <s>101</s> 96 bytes ヘッダーに複数の数字を含める場合(たとえば、スコアが2つのファイルの合計であるか、インタープリターフラグペナルティーを個別にリストする場合)、実際のスコアがヘッダーの最後の数字であることを確認します。 # Perl, 43 + 2 (-p flag) = 45 bytes 言語名をリンクにして、リーダーボードスニペットに表示することもできます。 # [><>](http://esolangs.org/wiki/Fish), …

30
Forever…Windowsスタイルを読み込んでいます
次の手順に従って、Windowsスタイルの読み込みバーを作成します。 (これはLoading ... Foreverとは異なることに注意してください) 出力はから始まり[.... ]ます。 ティックごとに、100ミリ秒待ってから、各ドットを1文字右に移動する必要があります。ドットが10番目の文字にある場合は、最初の文字に移動します。再度出力する前に画面をクリアする必要があることに注意してください。出力は次のように順序付けられます。 [.... ] [ .... ] [ .... ] [ .... ] [ .... ] [ .... ] [ ....] [. ...] [.. ..] [... .] ..それからそれは永久にループします。 ルール これはコードゴルフですので、最短の答えが勝ちます 可能であれば、動作中の読み込みバーのgifファイルを提供してください。

18
一年生のカウント運動を自動化する
CodeGolfチャレンジ PWSSHHHH!3000年に極低温研究室で目を覚ます。おそらく配達員のキャリアチップを受け取るために割り当てオフィスに連れて行かれると、プローブはあなたが2000年からであることを検出します。ステレオタイプ、あなたは今日の現代の人間と比較して愚かであると仮定され、学年を繰り返すことを余儀なくされています。 あなたは一年生の教室に入り、教師が課題を与えています。彼女は50までの数字を言うか、書きます。彼女がボードに数字を書く場合(たとえば:25)、その数字までを「1、2、3、...、25」と言わなければなりません。 「。彼女が数字を大声で言ったら(たとえば、「6」)、タブレットで、その数字までの数字を「1、2、3、4、5、6」と書く必要があります。 これは非常に面倒になり、21世紀のまだ機能しているがまだ機能しているプログラミングの知識でプロセスを自動化することにします。 目的: プログラムは入力を受け取る必要があります。この入力は、10進数(1 thru 50)または書き出された数値(one thru fifty)のいずれかです。 •入力が10進数の場合、出力は書き出されたスタイルを使用して、1からその数までカウントする必要があります。(例:32) •入力が書き出された数値である場合、出力は10進数形式を使用して1からその数値までカウントする必要があります。(例32) ルール: 入力と出力は、どのような場合でも選択できます(したがって、必要に応じて大文字のみを受け入れるプログラムを作成できます)。 入力10進数は数値型(intなど)である必要はありません。数値を含む入力文字列(25対 "25")にすることができます。どちらでも構いませんし、プログラムに受け入れたいものを選択できます。(プログラムは両方を受け入れる必要はありません) 書かれたスタイルでは、複合語の間にハイフンは必要ありませんが、必要に応じてできます。 出力値は何らかの形式で区切る必要がありますが、セパレータは問題ありません 1,2,3 1 2 3 etc num2words(python)などのような追加のライブラリを追加することはできません(ただし、システムライブラリは問題ありません) バックストーリーには2000年から来たと書かれていますが、その日付以降に作成された言語を使用できます(笑) これはcode-golfなので、バイトカウントが最も短いプログラムが勝ちます!

11
異なるタスク、同じキャラクター
この課題では、同じ文字セットを使用して4つの異なるタスクを解決する必要があります。文字を並べ替えることはできますが、文字を追加または削除することはできません。 勝者は、最小数の文字を使用してすべてのタスクを解決する提出物になります。すべてのタスクは同じ言語で解決する必要があります。 一意の文字の最小数ではなく、最小文字数であることに注意してください。 タスク1: N3番目ごとの合成数の最初の数を出力します。以下のコードブロックは、最初の行に最初の19個の合成番号を示し、下の行に3番目ごとの合成番号を示します。 4, 6, 8, 9, 10, 12, 14, 15, 16, 18, 20, 21, 22, 24, 25, 26, 27, 28, 30 4, 9, 14, 18, 22, 26, 30 その場合N=5、出力はになります4, 9, 14, 18, 22。をサポートする必要があり1<=N<=50ます。 合成数は、素数でも1でもない正数です。 結果N=50は次のとおりです。 4, 9, 14, 18, 22, 26, 30, 34, 38, 42, 46, 50, …

26
オートバイのギアチェッカー!
あなたの何人かは、オートバイがシフトする方法に精通しているかもしれません。しかし、そうでない人のために、それはこのように見えます 6 5 4 3 2 N 1 今、私はいくつかのアップシフトとダウンシフトを行った後、私がどんなギアにいるのか知りたいです。プログラムは中立から動作するはずです。 サンプル入力: V^^ サンプル出力: 2 ご覧のとおり、私はNから1に1回ダウンシフトし、2番目のギアに2回アップシフトしました。 これはコードゴルフです。バイト単位の最短回答が優先されます。 注:入力には任意の2文字を使用できます。上下のUとD、または任意の文字列にする必要があります。1速または6速を超えてシフトすることはできません。あなたが6位であり、再びアップシフトする場合、それは6位のままになります。がんばろう!
36 code-golf 

21
カンガルーの跳躍
バックストーリー 免責事項:カンガルーに関する情報が含まれている場合があります。 カンガルーはいくつかの開発段階を通過します。彼らは年をとって強くなるにつれて、より高く、より長くジャンプすることができ、空腹になる前に何度もジャンプすることができます。 ステージ1では、カンガルーは非常に小さく、まったくジャンプできません。これにもかかわらず、常に栄養が必要です。このようにステージ1のカンガルーの活動パターンを表すことができます。 o ステージ2では、カンガルーは小さなジャンプをすることができますが、空腹になる前に2つを超えることはできません。このようにステージ2のカンガルーの活動パターンを表すことができます。 o o o o o ステージ2の後、カンガルーはすぐに改善します。その後の各段階で、カンガルーは少し高く(グラフィック表示では1単位)、2倍にジャンプできます。たとえば、ステージ3のカンガルーの活動パターンは次のようになります。 o o o o o o o o o o o o o o o o o ステージnの場合、アクティビティパターンは、高さnの2 n-1個の V字型ジャンプで構成されます。 たとえば、ステージ4の場合、高さ4のジャンプが8回あります。 o o o o o o o o o o o o o o o o o …

8
狂気の妻がクリスマスツリーを飾るのを手伝ってください
私の妻は、クリスマスツリーに飾りを付けることに関しては、特にそうです。この挑戦的な時間に彼女を助けるために彼女にいくつかのコードを手に入れましょう。 入力 入力2 < n < 10が与えられたとき、木の高さ0 < k < nと装飾の明確な数。 仕事 ツリーの装飾を開始し、ツリーの周りに装飾をラップしながら1増分しkます。到達kしてさらに装飾するブランチがある場合は、から始めます1。 パターンが満たされている限り、ツリー上の各装飾の数が同じでなくてもかまいません。 飾りは^、一番上の行を除き、各枝の上に表示されます。 ツリーは、1つのブランチから始まり、次のレベルに次のように、それぞれの間にスペースを空けた+ 1つのブランチがあります。 ^ ^ ^ 3番目の行には、ブランチをもう1つ追加し、同じ列にブランチがないようにそれらを再度ずらします(グリッドのように考える場合)。 ^ ^ ^ ^ ^ ^ 出力 装飾されたツリーを出力します。 例 1。 n = 3, k = 2 ^ //Height is 3 ^ ^ ^ ^ ^ ここで、1から始まりkに増分する各ブランチを装飾します。 ^ 1 2 …

14
課題の配列#2:ネストされた配列を分離する
注:これは、一連のアレイ操作の課題の第2位です。前のチャレンジについては、ここをクリックしてください。 ネストされたリストの分離 ネストされたリスト内の値を分離するには、フラット化してから、各値をラップして、以前と同じネストされた深さになるようにします。 つまり、このリストは次のとおりです。 [1, [2, 3], [4, 4, [5, 2], 1]] になるでしょう: [1, [2], [3], [4], [4], [[5]], [[2]], [1]] チャレンジ あなたの仕事は、(あなたの言語の制限内で)正の整数のネストされたリストを取り、この分離操作を実行するプログラムを書くことです。 リストを引数として受け取る関数、またはI / Oを実行する完全なプログラムを送信できます。 これはcode-golfであるため、最短の送信(バイト単位)が勝ちです!* *標準的なゴルフの抜け穴は禁止されています。あなたはドリルを知っています。 テストケース 入力リストには、言語の標準整数サイズの整数のみが含まれます。言語の制約が競合するのを防ぐため、値は10を超える深さでネストされません。 入力に空のサブリストがないと仮定することができます。たとえば- [[5, []]]は与えられません。ただし、メインリストは空の場合があります。 [] -> [] [[1, 2]] -> [[1], [2]] [3, [4, 5]] -> [3, [4], [5]] [3, [3, …

30
何かキーを押すと続行します
あなたの仕事は、次のテキストを表示するプログラムを作成することで、ユーザーがキーを押すのを待つが(それはのようなキーを無視しても大丈夫ですctrl、alt、caps lockキーは好きなように、など、限りletters、numbers、symbols、とenter無視されていない)を、その後、プログラムを終了します。 Press any key to continue... 末尾の改行が許可されます。プログラムは、キーが押された直後に終了する必要があります。また、プログラムはかなり移植可能でなければなりません(つまり、OS固有のヘッダーやモジュールがなく、IDEの外部で実行されるなど)。 末尾の改行が避けられない場合を除き、プロンプトは上記のとおりでなければなりません。 これはcode-golfであるため、バイト単位の最短回答が優先されます。これは私の最初のコードゴルフの質問でもあるので、PPCGのルールがわからない場合は謝罪します。
36 code-golf 

11
xkcdを表示する
xkcdはみんなのお気に入りのウェブコミックであり、あなたは私たち全員にもう少しユーモアをもたらすプログラムを書くことになります。 この課題の目的は、入力として数値を受け取り、そのxkcdとそのタイトルテキスト(マウスオーバーテキスト)を表示するプログラムを作成することです。 入力 プログラムは、入力として正の整数(有効なコミックが存在する必要はありません)を受け取り、そのxkcdを表示します。たとえば、1500の入力は、xkcd.com / 1500でコミック「Upside-Down Map」を表示します。そして、タイトルテキストをコンソールに印刷するか、画像とともに表示します。 Due to their proximity across the channel, there's long been tension between North Korea and the United Kingdom of Great Britain and Southern Ireland. テストケース2、n = 859の場合: Brains aside, I wonder how many poorly-written xkcd.com-parsing scripts will break on this title (or ;;"''{<<[' …

24
複素数2進数
正整数からガウス整数への単純な全射マッピングを作成してみましょう。ガウス整数は、実数部と虚数部が整数である複素数です。 たとえば4538、正の整数が与えられた場合、先頭に0'を付けずにバイナリで表現します。 4538 base 10 = 1000110111010 base 2 後続0のを削除します。 100011011101 1つ以上0のすべての実行を単一のものに置き換えます+。 1+11+111+1 すべて1のをで置き換えますi: i+ii+iii+i 結果の複雑な式を評価し、単純化されたガウス整数を出力します。 i+ii+iii+i = i+i*i+i*i*i+i = 2i+i^2+i^3 = 2i+(-1)+(-i) = -1+i 出力は、従来の数学的な方法で表現することも、実数部と複素数部に2つの個別の整数として与えることもできます。この4538例では、次のいずれでも問題ありません。 -1+i i-1 -1+1i (-1, 1) -1 1 -1\n1 以下のような入力の場合29、Mathyさんは、次のような出力フォーマットされた0、0iまたは0+0iすべての罰金です。 それがあなたの言語にとってより自然であれば、j代わりに(または他の何か)を使用しても問題ありませんi。 バイト単位の最短コードが優先されます。

14
無限の言葉を見つけよう!
(注:これは、以前の課題Find the Swirling Wordsから派生したものです!) Infinity Wordの定義: アルファベット(AZ)上の無限大単語のすべての文字を曲線でつなぐと、下の図のように無限大記号∞が得られます。 すべての偶数接続がダウンしていなければならず、すべての奇数接続がアップしていなければなりません。 大文字/小文字を無視するか、すべてを大文字に変換するか、すべて小文字に変換/変換することができます。 入力単語は、A〜Zのアルファベット範囲の文字のみで、スペース、句読点、記号は使用できません。 各単語は正確に5文字でなければなりません。5文字以上または5文字未満の単語は無効です。 単語に二重連続文字がある場合、「FLOOD」や「QUEEN」のように、単語は無効です。 すべての無限語は同じ文字で始まり、同じ文字で終わります。 ここにいくつかの例があります: 仕事: 標準入力から単語を取得し、Infinity Wordかどうかを出力する完全なプログラムまたは関数を作成します。出力はtrue / false、1 / 0、1 / Nullなどです。 テストケース: Infinity Words: ALPHA, EAGLE, HARSH, NINON, PINUP, RULER, THEFT, WIDOW NOT Infinity Words: CUBIC, ERASE, FLUFF, LABEL, MODEM, RADAR, RIVER, SWISS, TRUST, KNEES, QUEEN, GROOVE, ONLY, …
36 code-golf  string 

14
グレーコードの増分
前書き A グレイコード番号は1ビットだけではなく、ビットの可変量を切り替えるだけインクリメントされたバイナリ表現に対する代替です。以下に、10進数および2進数に対応するいくつかのグレーコードを示します。 decimal | binary | gray ------------------------- 0 | 0 | 0 ------------------------- 1 | 1 | 1 ------------------------- 2 | 10 | 11 ------------------------- 3 | 11 | 10 ------------------------- 4 | 100 | 110 ------------------------- 5 | 101 | 111 ------------------------- 6 | 110 | 101 …

30
コードラダー、警官
注:このチャレンジは終了しました。提出はまだ歓迎されていますが、勝つことはできません。 これは警官のスレッドです。強盗のスレッドはここに行きます。 整数を出力するコードを記述します1。(選択した)単一の文字を追加、削除、または置換する場合、コードは整数を出力する必要があります2。さらに同じ文字(同じ文字または別の文字)を変更すると、コードが出力されます3。できる限りこのように続けますが、最大10までです。デフォルトの出力形式ans = 1は受け入れられます。STDERR(または同等のもの)への出力は無視できます。 言語、初期コードのバイト数、動作する整数の数、および初期コードのオプションの文字数を明らかにする必要があります。注:キャラクターを公開する必要はありませんが、キャラクターを公開すると、同じ位置で同じキャラクターを使用する必要があるため、強盗にとって難しくなる可能性があることに注意してください。表示されない文字(たとえば、アンダースコア)を示すために使用する文字を選択できますが、これを必ず指定してください。 警官は、1週間後にクラックのないコードを提供し、提出を「SAFE」と呼ぶことができます。勝った提出物は、番号10を生成する最短の無亀裂の提出物になります。亀裂のない提出物が10を印刷できない場合、9を生成する最短のコードが勝ちます。強盗はあなたと同じ変更を行う必要がなく、正確なコードを再現する必要がないことに注意してください(すべてのキャラクターを公開しない限り)。出力のみを再現する必要があります。 11月24日以降に投稿された投稿は歓迎されますが、勝ちの資格はありません(強盗の数が減る可能性が高いため)。 サンプル投稿: 次の投稿は言語MyLangでの投稿で、長さは9バイトで、数字1〜8で機能します。 MyLang、9バイト、8桁の数字 この投稿は1〜8で機能します。公開されていない文字はアンダースコア:で示されます_。 abc____i リーダーボード 免責事項:リーダーボードはテストされていないため、クラックされていない提出物がリストに表示されない場合があります。 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script><style>table th,table td{padding: 5px;}th{text-align: left;}.score{text-align: right;}table a{display: block;}.main{float: left;margin-right: 30px;}.main h3,.main div{margin: 5px;}.message{font-style: italic;}#api_error{color: red;font-weight: bold;margin: 5px;}</style> <script>QUESTION_ID=99546;var safe_list=[];var uncracked_list=[];var n=0;var bycreation=function(x,y){return (x[0][0]<y[0][0])-(x[0][0]>y[0][0]);};var byscore=function(x,y){return (x[0][1]>y[0][1])-(x[0][1]<y[0][1]);};function u(l,o){jQuery(l[1]).empty();l[0].sort(o);for(var i=0;i<l[0].length;i++) l[0][i][1].appendTo(l[1]);if(l[0].length==0) jQuery('<tr><td colspan="3" class="message">none yet.</td></tr>').appendTo(l[1]);}function m(s){if('error_message' in …

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