タグ付けされた質問 「code-golf」

コードゴルフは、ソースコードの最小バイトで特定の問題を解決するための競争です。

9
文字列を「階段状にする」
「階段状の」文字列を作成するプログラムまたは関数を作成する必要があります。文字列を「階段状に」する方法は次のとおりです。 文字列の各文字に対して: 文字が「y」を含まない大文字または小文字の母音の場合は、出力してから、文字列の残りを列の上に移動します。 文字がスペースまたはタブ、出力された場合には、その文字列の残りの部分を移動ダウン colum。 文字がどちらでもない場合、正常に出力します。 IOは、合理的な形式で作成できます。入力には改行は含まれません。必要に応じて、末尾の空白を削除できます。 文字列を印刷するのではなく返すことを選択した場合は、文字列を視覚化できるように印刷する短いプログラムも含めてください。これは必須ではなく、バイトカウントにもなりません。これは、ゴルフやエソラン(私のような)を理解していないユーザーにとっては、出力を検証したり、コードをいじったりできるようにするための便利なものです。 サンプルIO: 「bcdef ghijkl」の出力: f jkl bcde ghi 「プログラミングパズルとコードゴルフ」の出力: lf -Go s nd de ng zzle A Co mmi Pu gra Pro 「Abcdefghijklmnopqrstuvwxyz」の出力: vwxyz pqrstu jklmno fghi bcde A いつものように、これはコードゴルフなので、バイト単位の最短回答が勝ちです。
12 code-golf  string 

4
線形方程式を解く
この課題は、より良い仕様です。 スペック プログラムは、単一の変数を含む線形方程式を取り、xの値を出力しますx。 入力/解析 入力には、数字、演算子、括弧(())、、xおよび=記号のみが含まれます(これは空白がないことを意味します)。 括弧は常にバランスが取れています。 常に少なくとも1つありxます。のx前に数字を付けることができます。 すべての方程式の結果は1つになります。 番号は、以下の手順で定義することができます。数値は、正規表現で定義できます-?(\d+(\.\d+)?|\.\d+)。 正規表現を話さない場合:数字は次のように定義されます 0-9 それがあるかもしれません -冒頭に負の意味 そして、そこにもいくつかの桁です。それらが数字でない場合、小数点があります 小数点が存在する場合、少なくとも1桁がそれに続きます 最大の数値/値は、言語の機能によって定義されます。 オペレータは、のいずれかであります:+-*/、彼らは常に数字、または括弧の間に表示されます これは(5)(5)、簡単にするために有効な入力ではないことを意味します。 カッコ内には、常に有効な式(数字や演算子の有効な組み合わせ)が含まれます。「バランスのとれた」括弧は、すべて(に関連する終了があるため定義されます) 評価 操作の順序に従う必要があり、優先順位は(最高から最低)です。 括弧(最も深くネストされた最初) 乗算と除算 加算と減算 同じ優先順位の2つの演算子が発生した場合は、左->右に進むことをお勧めします 出力 結果を何らかの方法で出力する必要があります。数値の結果だけを出力しない場合は、出力の出力方法を回答で明確にします。出力形式は一貫している必要があります。出力は小数でもかまいませんが、常に合理的であり、精度は言語の精度に制限されます。ご使用の言語が浮動小数点演算をサポートしていない場合にのみ、サポートする必要はありません。 ルール このタスクを単純化するビルトインは許可されますが、明確に追加する必要があります[uses built-in]その答えのヘッダに明確に。これはあなたの答えが勝つことを免除します 「このタスクを単純化する組み込み」は、次のいずれかです。 方程式を取り込み、a /変数の値を出力するもの 方程式を完全に単純化するもの evalまたは関連する関数を使用して、かなりの量の解析を行います。eval線形方程式を解くために(入力の変更を最小限に)使用する場合、および関連する関数の使用は許可されません。 疑問がある場合は、コメントを求めてください。 方程式を解析するビルトインが許可されています 例 3+4=x 7 4+x=5 1 3+3*3=x 12 3x-4=7+2x 11 3--1=x 4 3*(2+4x)=7x-4 -2 …

2
ワード検索ヘルパー
私は最近、単語の検索を行ってきた、と私は可能だろうと思ったので、言葉のすべてが読めばはるかに簡単に左から右へ。しかし、すべての行を書き換えるには多くの労力が必要です!だから私はコードゴルファーを助けるために参加しています。 (免責事項:上記のストーリーは、リモートで正確である場合とそうでない場合があります。) コードは長方形のグリッドを取り、すべての行を両方向に出力します。 出力には、グリッドの8つのすべての回転(基数と主対角線)が含まれている必要があります。(これは、すべての「行」が複製されることを意味します-一度前方に、一度後方に。) 行分割は、スペースまたは改行のいずれかです。スペースを選択する場合、グリッドの回転分割は改行にする必要があります。それ以外の場合、グリッド回転区分は2つの改行でなければなりません。 入力例(文字の配列、複数行の文字列、またはその他の適切な形式として取得) ABCDE FGHIJ KLMNO PQRST 出力例(部門の最初のオプションを使用) ABCDE FGHIJ KLMNO PQRST E DJ CIO BHNT AGMS FLR KQ P EJOT DINS CHMR BGLQ AFKP T OS JNR EIMQ DHLP CGK BF A TSRQP ONMLK JIHGF EDBCA P QK RLF SMGA TNHB OIC JD E PKFA QLGB …

3
バイナリ文字列の半逆
これは私のPuzzling.SEの質問のフォローアップの質問です。ブール文字列をブール文字列にマッピングする関数fがあり、すべての入力文字列b に対してf(f(b))= reverse(b)があるかどうかを尋ねました。(reverseとは、ビットの順序を逆にする機能を意味します。) 上記のリンクには、優れたf ''による証明付きの肯定的な答えが含まれていますが、見る前に自分で質問を熟考することをお勧めします。 そのような関数fをできるだけ少ないバイトで実装します。 STDINから入力を読み取るか、関数の引数を取ることができます。そして、結果文字列をSTDOUTに書き込むか、それを返します。 どちらの方法でも、選択した2つの異なるバイトまたは文字の実際の文字列(0and 1、or \x00、andなど\x01)、またはtrueおよびfalse値の配列/リストを操作できます。ただし、2つの値を選択し、それらに固執します。 fを 1回適用した結果は、バイナリ文字列そのものでなければなりませんb -> if b starts with 'x' then reverse(b[1:]) else 'x' + b。 あなたの機能は合計する必要があります。特に、入力は空の文字列、または1ビット長などです。文字列の長さの上限はありません。 また、純粋でなければなりません。関数呼び出し間でグローバルな状態を保持しないでください。入力文字列は出力文字列を完全に決定する必要があります。
12 code-golf  string 

7
依存関係に基づいてアイテムを並べ替える
ゴール アイテムのリストをソートして、各アイテムが指定された依存関係の後にリストされるようにします。 入力 整数の配列の配列。各整数は、このアイテムの後に来る必要がある別のアイテムの0ベースまたは1ベースのインデックスを指定します。入力は、配列または文字列、または人間が読めるものであれば何でもかまいません。 たとえば、0ベースの入力: [ [ 2 ], // item 0 comes after item 2 [ 0, 3 ], // item 1 comes after item 0 and 3 [ ], // item 2 comes anywhere [ 2 ] // item 3 comes after item 2 ] 循環依存関係はなく、常に少なくとも1つの有効な順序があると仮定します。 出力 依存関係の番号。あいまいな順序は確定的である必要はありません。出力は、配列またはテキスト、または人間が読み取れるその他のものです。 …

7
ハイパーキューブの端に
あなたの仕事はn>0、入力または入力として整数を受け取り、- n次元ハイパーキューブのエッジのリストを出力する関数またはプログラムを作成することです。グラフ理論では、エッジは接続された2組の頂点(または必要に応じてコーナー)として定義されます。 例1 1次元の超立方体はラインであり、我々は呼ぶ2つの頂点、特徴aとしますb。 したがって、出力は次のようになります。 [[a, b]] 例2 4次元のハイパーキューブ(またはtesseract)は32のエッジで構成され、そのグラフは次のようになります 出力は次のようになります [[a, b], [a, c], [a, e], [a, i], [b, d], [b, f], [b, j], [c, d], [c, g], [c, k], [d, h], [d, l], [e, f], [e, g], [e, m], [f, h], [f, n], [g, h], [g, o], [h, p], …

1
この単語にはいくつの文字がありますか?
Project Euler#17に触発され、これがあなたの挑戦です。入力として数値を受け取る完全なプログラムまたは関数を作成し、その数値までカウントするのに必要な文字数(1から始まる)を印刷または返します。スペース、コンマ、ハイフンは含めませんが、単語を含める必要がありますand。例えば。342のスペルは次のとおりThree Hundred and Forty-Twoです。これは23文字の長さです。 入力は正の整数になります。無効な入力を処理する必要はありません。数値を英語に変換する組み込みまたはライブラリは許可されていません。 数字のつづり方に関するすべてのルールを次に示します。(注:一部の人々は、数字のつづり方に異なる規則のセットを使用していることを認識しています。これは、このチャレンジの目的のための公式規則にすぎません) 1から20 1、2、3、4、5、6、7、8、9、10、11、12、13、14、15、16、17、18、19、20 21から99 これらに参加してください: 20、30、40、50、60、70、80、90 これらに: -one、-two、-three、-four、-five、-six、-seven、-eight、-nine、 4にはuが40あることに注意してくださいしません! 例: 53: Fifty-three 60: sixty 72: seventy-two 99: ninety-nine 100から999 数百(百、二百、三百など)、「および」、および上記の残りの数字を書きます。とあなたの手紙のスコアにカウントされます。 例: 101: One hundred and one 116: One hundred and sixteen 144: One hundred and forty-four 212: Two hundred and twelve 621: Six Hundred …
12 code-golf  math  number 

6
バイナリ検索のステップ数
入力が正の整数の場合、1から始まるバイナリ検索で入力を見つけるために必要なステップ数を出力します。 入力として与えられた整数のバイナリ検索をシミュレートします。シミュレートされたサーチャーは整数を繰り返し推測し、整数が高すぎる、低すぎる、または正しいかどうかを確認できます。整数を見つけるための戦略は次のとおりです。 nを、検索しようとしている入力として与えられた整数とします。 1の推測から開始します(推測ごとに(正しいかどうかに関係なく)ステップ数を増やし、推測が正しい場合は直ちにステップの合計数を停止して出力します。) 推測がn(ターゲット数)よりも大きくなるまで繰り返し推測を繰り返します。(または、それが正しい場合でも、上記の正しい推測ルールで既にカバーされています。) ここで、n(つまり、推測された数)よりも大きい2の最初の累乗の上限を設定し、その直下に2の累乗の下限を設定します。 上限と下限の平均(切り捨て)を繰り返し推測します。高すぎる場合は、上限として設定します。低すぎる場合は、下限として設定します。この手順により、最終的に正しい推測が行われることが保証されます。 n = 21の入力の例を次に示します。 1 -> 2 -> 4 -> 8 -> 16 -> 32 -> 24 -> 20 -> 22 -> 21 \__________________________/ repeated doubling \________________________/ repeated averaging これはcode-golfであるため、バイト単位の最短コードが優先されます。 以下は、n = 1からn = 100までのすべての出力です。 1 2 4 3 6 5 6 4 8 …

4
担当者の再計算にご協力ください!
数か月前に、質問に対する賛成票で与えられる評判を高めることについて、メタについて議論しました。投票の現在の評判システムの基本は次のとおりです。1 質問に賛成票を投じるU価値は5つあります。 回答の賛成票uは10名の価値があります。 質問または回答のダウン票dは、-2評判に値します。 新しいシステムにはさまざまな提案がありましたが、現在最も人気のあるものは上記と同じですが、質問の賛成票が+10 repにスケーリングされています。この課題は、このシステムが導入された場合にどれだけ多くの担当者を獲得できるかを計算することです。 例を見てみましょう。投票アクティビティがの場合、UUUUuuuuUUUUUduuudUU現在のシステムでは121を獲得します。 U x 4 x 5 = 20 = 20 u x 4 x 10 = 40 = 60 U x 5 x 5 = 25 = 85 d x 1 x -2 = -2 = 83 u x 3 x 10 = 30 …

3
騎士と騎士
これはcode-golfです。 この課題では、「Knights and Knaves」パズルを解決するプログラム/関数を作成します。 バックグラウンド あなたは島にいることに気づく...など...あなた以外の島にいる人は皆、騎士か悪魔のいずれかです。 騎士は真の発言のみを行うことができます。 Knavesは虚偽のステートメントのみを作成できます。 「ステートメント」を厳密に定義したくありませんが、ステートメントは「true」または「false」のいずれかであると言います。これは逆説的な文章を除外することに注意してください。 この挑戦の目的のために、あなたは島民のグループに出くわします。彼らはあなたに声明を出します。 あなたの仕事は誰が騎士で誰がKnaveであるかを決定することです。 入力: 次の情報が(合理的な形式で)提供されます。 出席者のリスト。大文字のアルファベット文字「AZ」で名前が付けられます。これにより課せられる人数の制限を超えることはありません。 各人が行う声明。これに関する重要な詳細については、以下を参照してください。 出力 次に、各人が何であるかを(合理的な形式で)出力します。例えば、そこにあれば選手だったA B C DとA騎士ですが、残りknavesである、あなたは出力ができました A: 1 B: 0 C: 0 D: 0 重要な詳細: 大文字のアルファベットA〜Zは島民を指します。 文字0(ゼロ)と1(1)は、それぞれ「Knave」と「Knight」を表します。(指定する限り、他の2つの非AZ文字を使用できます) 出席している各島民は、自然な数の発言を行うか、何も言わないことを選択する場合があります。 通常の論理演算子はステートメントで使用できます(IS *、AND、OR、NOT)。これに加えて、De Morganの法則と条件式を使用できます。以下は、音声パズルでどのように表示されるか、その後にプログラムに入力される方法の例です。 (*より技術的な注意。「IS」演算子は実際には封じ込めとして使用されます(論理演算子ではありません)。「Aは騎士です」と言うとき、私は本当に「AはKnights」。使用される真の演算子は「ϵ」です。簡単にするために、代わりに「=」を使用します。) 私は以下を使用します(合理的で一貫性がある限り、何でも使用できます)。 ^ そして v または = IS ~ ない => 実装 X:X人は... 人Zは、次のタイプのステートメントの任意の組み合わせを作成できます。 人Zは言う... …
12 code-golf 

21
シーケンシャル乗算
あなたの目的は、入力を受け取り、時間を連鎖させたときにN「順次乗算」を実行するプログラムを作成することです。逐次乗算とは何ですか?このaように定義されたシードを持つシーケンスです: f(0) = a f(n+1) = f(n)*(f(n)-1) だから、みましょうa = 5。このように、f(0) = 5、f(1) = f(0)*(f(0)-1) = 5*4 = 20、とf(2) = f(1)*(f(1)-1) = 20*19 = 380。 あなたのプログラムであった場合ABC、その後、ABC入力すべきであるaと出力をf(1)。プログラムABCABCはf(2)などを出力する必要があります。プログラムシリーズは入力を1回のみ、出力を1回のみにする必要があります。 これはコードゴルフなので、バイト単位の最短プログラムが勝ちです。標準的な抜け穴は禁止されています。

14
多肢選択式テストの準備
前書き 注:これは、不正行為を助長する何らかの方法ではありません。以下のようCᴏɴᴏʀO'Bʀɪᴇɴは 3:すでに言った、勉強はテストに合格するための最適なソリューションです。 複数選択テストに対する次の回答を検討してください。 ABCBCAAB 回答が一致するかどうかを示す表は次のとおりです。 A B C B C A A B A 1 0 0 0 0 1 1 0 B 0 1 0 1 0 0 0 1 C 0 0 1 0 1 0 0 0 これにより、次の数字が得られます。 10000110, 01010001, 00101000 課題は、これらの2進数を印刷することです。ただし、複数選択テストでどの文字が使用されているかを確認することが重要です。例えば: ABCDCDBCDABC この最高文字はD、アルファベットの4番目の文字です。したがって、4つの異なる 2進数を出力する必要があります。すなわち: 100000000100, …

1
変装した括弧はありますか?
誰かが文字列を与えてくれましたが、すべての括弧のような文字が通常の文字に変更されており、どれがどれだけあるか、さらには何個あるかさえわかりません。私たちが知っているのは、L1,L2,L3,...,LN異なる種類のR1,R2,R3,...,RN左角かっこであり、対応する種類の右角かっこであり、すべてが異なる場合(2N個の異なる角かっこ文字)、それが次のいずれかである場合に文字列が有効になることです(+は通常の文字列連結): L1+X+R1、L2+X+R2、...、LN+X+RNここで、X有効な文字列であり、 X+Y、どこXでYは有効な文字列、 ブラケット文字ではない任意の単一文字。 空の文字列 かっこを変更する前に有効な文字列から始めたことがわかっており、文字列に既に存在する文字には変更していません。各ブラケットにも少なくとも1つのペアが存在しました。どの文字が元々左右のブラケットペアであったかを再構築できますか(特定の条件を見つけて、LiそれにRi従ってください)? 大括弧であった文字のペアを出力します。たとえば、(){}[]実際にブラケット文字だった場合(){}[]、{}[]()または[](){}、などを出力する可能性があります。文字列に対してこれを行う方法は複数ある場合があり、より多くのペアでブラケットが割り当てられない方法を1つ返すだけです(例を参照)。出力文字列は常に偶数の長さであることに注意してください。 例: abcc- c2回出現して他の文字がないので、ブラケットすることはできませんが、abあなたは正確にそう、出力しまうブラケットペアすることができab。 fffff -最大で1文字の文字列には角括弧を使用できないため、空の文字列を返すか、何も出力しません。 aedbedebdcecdec -1 a、2 bs、3 cs、4 ds、および5 esがあるため、この文字列に角括弧を含めることはできません。したがって、同じ文字数で2つの文字が発生することはありません。 abcd-可能な割り当てがあるab、cd、abcd、cdab、adbc、bcad、ac、ad、bcおよびbd、(だけでなく、それらのすべてが持っている空の割り当て、)しかし、あなたは、あなたが返さなければならないので、最長の割り当てのいずれかを返す必要がありabcd、cdab、adbc、またはbcad。 aabbcc、abc-これらは両方持っているab、acと、bc有効なペアとして。これらのペアのいずれかを返す必要がありますが、どちらでもかまいません。 abbac-aとbの文字カウントは同じですが、実際には機能しません。これらの1つは、他のすべてのオカレンスの左右の両方で発生するためです。何も返しません。 aabcdb- cdおよびabは正確な2つのブラケットペアであるため、cdabまたはのいずれかを出力しますabcd。 abcdacbd-唯一のペアを一度に実現することができますが、ab、ac、bd、cd、とadあなたは、可能なペアのすべてを返すことができています。どのペアを選択しても、その中に他の単一のキャラクターがいるインスタンスがあり、他のペアを禁止します。ただし、の場合を除きad、他のペアbcとcbは単独では不可能であり、不可能ですでad。 これはコードゴルフであるため、バイト単位の最短コードが優先されます。ご使用の言語で可能な場合、入力はSTDINからのものです。それが不可能な場合は、回答に入力方法を記載してください。

4
文字列に収まるすべての数字
正の整数Nを取り込むプログラムまたは関数を作成します。数字()、小数点()、および負符号()を使用して、正確にN文字で記述できるすべての個別の10進数のリストを出力します。0123456789.- 例えば、N = 4の出力リストであろういくつかの数であり1337、3.14、.999、-789、-2.7、および-.09。 数字は通常の方法で書かれますが、できるだけ短い形式で書かれます。これの意味は: 小数点は、数値が整数でない場合にのみ含める必要があります。 たとえば45.0、45.プレーンとして記述される必要があります45 -45.00 として書かれるべきです -45 小数点の左側に先行ゼロがないはずです。 03003として記述される必要3が30あり300ますが、そのままで問題ありません 0.3そして00.3ただのように書かれるべきです.3 -03 として書かれるべきです -3 -0.3 として書かれるべきです -.3 小数点の右側に後続ゼロがないはずです .50そして、.500のように記述する必要があります.5 900.090 として書かれるべきです 900.09 最後の2つの規則の例外はそれ自体がゼロであり、これは常にplainと記述0する必要があります。 正符号(+)は、番号を不必要に長くするため使用しないでください。 また、マイナス記号(-)を減算記号として使用しないでください。ゼロ未満の数字の最初の文字としてのみ表示されます。 書式設定 数値の出力リストの順序は重要ではありません。上昇、下降、または完全に混ざり合っている可能性があります。それだけでその重要すべてをN文字で記述できる個別の数字。 リストは、物事が一貫している限り、スペース、改行、コンマ、またはおそらく数字の間の何かを使用して、合理的な方法でフォーマットできます。先頭と末尾の括弧(または同様のもの)は問題ありませんが、数値を引用符で囲むことはできません。(つまり、出力で文字列とint / floatを目に見えて混同しないでください。) たとえば、N = 1の場合、有効な出力は次のようになります。 0 1 2 3 4 5 6 7 8 9 [1, 2, 3, 4, 5, …

5
効率的な科学表記法
先日、化学の先生が科学表記法について説明していました(小さい数字を使用し、10の累乗を掛けて大きい数字をより簡単に表現できるようにしました)。基本を学んだ後、いくつかの典型的な数学の質問をしました。そのうちのいくつかは次のようなものでした: 科学表記法で次を表します: a)50000000 b)120000000000000 c)90000000000000000000000000000000000000 d)pi ^ e ^ i ^ j ^ k ^ std :: vector ... z)200 ... そして、「何?科学的な表記法を使用して、大量の文章をより効率的に作成できると言われましたが、まったく効率的でない場合もあります!」 数を考える 300 および科学表記法での表現: 3x10^2 科学的に表記されたバージョンは実際にはより多くのスペースを占有しますか?今はできませんか?(画面スペースは貴重です。) 科学表記法で数字を書く方がよりスペース効率が良いかどうかを判断できます。または... 仕事 プログラムまたは関数は、入力としてn、任意のサイズの単一の正の数(言語がサポートするものまで)を受け取り、その数の科学的に表記されたバージョンを出力する必要があります。 ただし、n末尾のゼロと小数点以下の桁を削除した後、元の数値が表示される文字数が科学的に表記されたバージョンより少ないか同じ場合、n代わりにその元の数値を出力する必要があります。 出力もできるだけ短くする必要があるため、コードはできるだけ短くする必要があります。 仕様書 効率的な科学表記法は次のように定義されています。 bx10^e bは、適切に10の累乗で除算された入力数です1 <= b < 10。この数値では、すべての末尾のゼロ(および必要に応じて小数点)を削除する必要がありますが、元の数値の精度(もちろん、言語の小数点の制限まで)が必要です。すなわち90000なり9、13.500なり1.35、0.000675なると6.75、あなたの言語が処理できる以上の小数点以下を含むアップこの数が終了した場合などは、小数点以下の桁数の最大数に四捨五入されなければなりません。 eは、10が累乗される指数ですn = b x 10^e(n1より小さい場合、この数値は負である必要があることに注意してください)。この数値には、末尾のゼロや小数点以下の桁があってはなりません(主に整数でない場合、何かが間違っているためです...)。 文字がx10^ なければなりませんの間の文字列であるとして残るbとe。 テストケース Input -> …
12 code-golf  string  math 

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