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

アトミックコードゴルフは、定義した言語の特定のフラグメントでの操作の数によってスコア付けされます。

1
整数操作によりIEEE 754 64ビットのバイナリ浮動小数点数を実装します
(とりあえず質問「C」にタグを付けましたが、共用体をサポートする別の言語を知っている場合は、それも使用できます。) あなたの仕事は+ - * /、次の構造体の4つの標準的な数学演算子を作成することです。 union intfloat{ double f; uint8_t h[8]; uint16_t i[4]; uint32_t j[2]; uint64_t k; intfloat(double g){f = g;} intfloat(){k = 0;} } 演算自体は整数部分のみを操作またはアクセスするため(演算中にdoubleと比較することはありません)、結果はまったく同じです(またはのような非数値の結果の場合は機能的に同等ですNaN)対応する数学演算がdouble代わりに直接適用されたかのように。 操作する整数部分を選択できます。おそらく、異なる演算子間で異なる部分を使用することもできます。(ユニオンのフィールドのいずれかから「unsigned」を削除することもできますが、それを実行するかどうかはわかりません。) スコアは、4つの演算子のそれぞれの文字のコードの長さの合計です。最低スコアが勝ちます。 IEEE 754規格に慣れていない私たちの人のために、ここではウィキペディアにそれについての記事です。 編集: 03-06 08:47 intfloat構造体にコンストラクタを追加しました。double /などを手動で設定するのではなく、テストに使用できます。

6
可能な限り少数の異なる文字でプログラムをエンコードし、
目標は、できるだけ少ない文字で他のプログラム(入力)をエンコードするプログラムを作成することです。 得点 スコアは、出力に必要な異なる文字数に等しくなります。 スコアが低いほど優れています。 ルール 限られたコマンドセットを持つターゲット言語はありません。(Brainf ** k、ホワイトスペースなどはありません) 編集:私は少なくとも26人の重要なキャラクターを意味しAますが、brainf ** kプログラムの動作は変わらないので、このキャラクターを数えることはできません。空白についても同様です。 この質問が書かれている時点で、ターゲット言語が存在する必要があります。 スコアをアーカイブする方法について、簡単な説明を含める必要があります。 入力プログラムは有効です。 エンコードされたプログラムは、入力と同じ言語の有効なプログラムでなければなりません。 エンコードされたプログラムは、元のプログラムと同じジョブを実行する必要があります。 エンコーダは、その言語のすべての有効なプログラムで動作する必要があります。 サンプルの入力と出力を含めます。 ノート エンコーダーは、ターゲットとする言語だけでなく、任意の言語で作成できます。 これはcode-golfではなく、読み取り可能なプログラムが推奨されます。 大きな目標は、その言語で何かを書くために必要な文字数を確認することです。私はBFなどを拒否しました。なぜなら、挑戦がないからです。 これは、できるだけ少ない文字数で文字列を印刷することに触発されたもので、その質問のメタゴルフとみなすことができます。 例 Javaでは、\uXXXX代わりに他の文字を使用できます。有効なエントリは、この方法で入力からすべての文字をエンコードします。これは18のスコアになります。(\ 0-9a-f) Tclのコードは、Javaプログラムをエンコードします。 set res {} foreach char [split [read stdin] {}] { append res [format \\u%04x [scan $char %c]] } puts $res

14
昇順のNxNスパイラルを印刷[終了]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新することがありますので、上のトピックコードゴルフスタックExchange用。 閉じた2年前。 数値は、長さ=(N ^ 2の桁数)のフィールドに先行ゼロを付けて印刷する必要があります。 入力(N): 4 出力: 01 12 11 10 02 13 16 09 03 14 15 08 04 05 06 07 アルゴリズムと実装の清潔さに興味があります。したがって、空白はカウントされず、Nの上限は42です。

2
Collat​​zスタイルの卵狩り
グレートAPIイースターエッグハントに触発されました! 概要 あなたのタスクは、可能な限り少ないステップを使用して、「コラッツ空間」(後述)で所定の整数を検索することです。 前書き この挑戦は有名なCollat​​zの予想に基づいています。スーパーコラッツナンバーの印刷から抜粋しました。 このCollat​​zシーケンスあなたは、任意の正の整数で始まるこの例のために、我々は10を使用し、それへのステップのセットを適用する場所(も3X + 1問題と呼ばれる)は、次のとおりです。 if n is even: Divide it by 2 if n is odd: Multiply it by 3 and add 1 repeat until n = 1 このCollat​​z距離C(m,n)の2つの数の間のmとn、この課題の目的のためには、2つの数字の間の距離であるこのCollat​​zグラフ(使用して次のように定義され、(この概念についての私に告げるため@tshにクレジット)21と13の例として): m(この場合、21)のCollat​​zシーケンスを書き留めます。 21, 64, 32, 16, 8, 4, 2, 1 n(この場合、13)のCollat​​zシーケンスを書き留めます。 13, 40, 20, 10, 5, 16, 8, …

2
Xが3より大きく、XとYの間に少なくとも2つの差がある
私はいくつかのC ++をゴルフしようとしています。この条件を短くすることは可能ですか? X > 3 & X - Y > 1 (もちろん、空白の削除は別として。) だから、X少なくともです4がX >= Y + 2。 XおよびYは、[0,5]間隔の整数です。 ビット単位の数式を見つけようとしましたが、失敗しました。
11 code-golf  number  tips  c++  code-golf  popularity-contest  obfuscation  code-golf  c  code-golf  board-game  hexagonal-grid  code-golf  game  grid  code-golf  number  permutations  popularity-contest  math  graphical-output  number-theory  king-of-the-hill  code-challenge  compression  code-challenge  fastest-code  code-golf  math  ascii-art  animation  code-golf  popularity-contest  generation  counting  fastest-code  fastest-code  popularity-contest  image-processing  king-of-the-hill  code-golf  conversion  binary-tree  code-golf  math  number  rational-numbers  division  code-golf  restricted-source  hashing  atomic-code-golf  logic-gates  code-golf  function  code-challenge  puzzle-solver  ai-player  test-battery  popularity-contest  music  compression  code-golf  number  stack  atomic-code-golf  logic-gates  ascii-art  popularity-contest  code-golf  date  grid  code-challenge  game  code-golf  parsing  code-golf  math  geometry  sequence  popularity-contest  code-trolling  code-golf  string  restricted-source  code-golf  quine  king-of-the-hill  code-golf  math  code-golf  simulation  code-golf  ascii-art  code-challenge  sorting  optimization 

2
NAND論理ゲートを使用してビットカウントコンパレーターを構築する
ビットカウントコンパレータ(BCC)は、計数入力のいくつかの数をとる論理回路であり、A1, A2, A3, ..., An入力と同様にB1, B2, B4, B8, ...番号を表します。それ次いで戻る1の総数場合Aである入力番号によりバイナリで表さより大きいB(例えば、入力B1、B2およびB8数になるだろう11)、そして0そうでありません。 例えば、かかるビットカウントコンパレータの5入力を、そのA2、A4、A5、とB2に設定され1、戻ります13つのがあるためAである入力がよりも大きい、2(数のみによって表さB2です)。 あなたの仕事は、2入力NANDゲートのみを使用し、できるだけ少ないNANDゲートを使用して、合計16 A入力と4 B入力(から1までのビットを表す8)を取るビットカウントコンパレータを作成することです。物事を単純化するために、ダイアグラムでAND、OR、NOT、およびXORゲートを使用し、以下の対応するスコアを使用できます。 NOT: 1 AND: 2 OR: 3 XOR: 4 これらの各スコアは、対応するゲートを構築するために必要なNANDゲートの数に対応しています。 正しい構造を生成するために最少のNANDゲートを使用する論理回路が勝ちます。

3
ブラインドバイナリ加算器
2つのボックスB(x)とがありB(y)、それぞれに不明なビット-0または1が含まれていて、FそれらをX線撮影してB(x^y)(xor)の3つ目のボックスを生成できるマシンがあるとします。(および)Fも計算できます。-実際には、それらは、機械が実行できる単一の操作のちょうど特別な場合である内積それぞれ、で示さ以下。B(x*y)F() 2つの同じ長さの配列の場合 [B(x[0]), B(x[1]), ..., B(x[n-1])] [B(y[0]), B(y[1]), ..., B(y[n-1])] 内積は次のように定義されます B(x[0]*y[0] ^ x[1]*y[1] ^ ... ^ x[n-1]*y[n-1]) 「それぞれ」は、F()一度に複数ののペアを処理できることを意味します。そして一組からは同じ長さでなければなりません。異なるペアの-sと-sは必ずしも必要ではありません。x[]y[]x[]y[]x[]y[] ボックスは一意の整数IDで表されます。 JavaScriptでのそれぞれの内積の実装は次のようになります。 var H=[0,1]; // hidden values, indexed by boxId function B(x) { // seal x in a new box and return the box id return H.push(x)-1; } function F(pairs) { …

3
「原子」コードゴルフ-同位体の中性子の数を決定する
あなたの仕事は、要素の同位体を含む文字列を入力として受け取り、次の例のようにエンコードされ、原子番号の後にスペースと要素のIUPAC化学記号が続くことです。 162 Dy そして、その同位体の原子に含まれる中性子の数を返します。 上記の例では、ジスプロシウム162には96個の中性子(合計162核子、ジスプロシウムであるため66陽子を引いたもの)があるため、出力はになります96。 与えられた要素は、IUPAC(フレロビウムとUus肝組織を含む)によって現在恒久的な名前が与えられている114の要素の1つであり、「ununseptium」のような一般的な名前ではないと想定するかもしれません。同位体の原子番号が1000を超えないか、元素の陽子の数よりも少ないと仮定することもできます。 要素の陽子または中性子数に関するデータを取得するために組み込みを使用したり、文字列または数値トークンをそれ自体のコードとして評価するコード内の関数を使用したりすることはできません。 どんな言語でもこれを行うために最も少ないトークンを使用するプログラムが勝利します。ただし、この課題では、文字列内のすべての文字、または文字列に変換された変数名がトークンとしてカウントされます。 参照用の要素とその原子番号のリスト: コードスニペットを表示 { "H": 1, "He": 2, "Li": 3, "Be": 4, "B": 5, "C": 6, "N": 7, "O": 8, "F": 9, "Ne": 10, "Na": 11, "Mg": 12, "Al": 13, "Si": 14, "P": 15, "S": 16, "Cl": 17, "Ar": 18, "K": 19, "Ca": …

2
NANDロジックゲートを使用してEBCDICコンバーターを構築する
でこの質問、マッピングはEBCDICとISO-8859-1のスーパーセットの間で定義されます。 あなたの仕事は、8つの入力を受け取る2入力NANDゲートのネットワークを構築することです A1, A2, A4, ..., A128、EBCDIC文字を表すを受け取りB1, B2, B4, ..., B128、そのマッピングに従って対応する「ISO-8859-1」文字を表す8つの出力を返す。 物事を単純化するために、ダイアグラムでAND、OR、NOT、およびXORゲートを使用できます。対応するスコアは次のとおりです。 NOT: 1 AND: 2 OR: 3 XOR: 4 これらのスコアはそれぞれ、対応するゲートを構成するために必要なNANDゲートの数に対応しています。 上記のすべての要件を正しく実装するために最も少ないNANDゲートを使用する論理回路が優先されます。

4
NANDロジックゲートを使用して16進数の7セグメントディスプレイを駆動
ユビキタス7セグメント数値表示では、このWikipedia .gifに示すように、16桁の16進数すべてを明確に表示できます。 この課題のエントリは、16進数の4ビットを7つのセグメントの入力に変換するNAND論理ゲートを使用して回路図を作成します。7セグメントディスプレイの入力には、通常次のようにラベルが付けられています。(このチャレンジでは、DP(小数点)は無視されます) したがって、回路は次の真理値表に準拠する必要があります。 Hex | Hex Input Bit | Output to Segment line: digit | 3 2 1 0 | A B C D E F G ------+---------------+----------------------- 0 | 0 0 0 0 | 1 1 1 1 1 1 0 1 | 0 0 0 1 | …

1
このuHerbertチャレンジを解く
TL; DR:すべての白いパッドを踏み、灰色のパッドを避けて、この特定の課題であるロボットシミュレーションを解決します。各白いパッドを少なくとも1回踏む限り、何回でも白いパッドを踏むことができます。2D命令ポインターを使用したBefungeなどの言語でのソリューションも受け入れられますが、HにはuHerbertプログラムが付属しており、その言語仕様は以下のとおりです。これを解決するためにuHerbertプログラムは必要ありませんが、ソリューションのチェックがはるかに簡単になります。 レベルは次のようになります。これはセルの25x25グリッドで、ロボットと各白とグレーのパッドが1つのセルを占めます。ロボットは最初は上向きです。 uHerbertの背景 Herbertは、2008年にオンラインIGF(Independent Games Festival)プログラミングの課題で最初に遭遇したロボットシミュレーションです。実際のコンテストが終了した後、長い間、課題を試すことができなかったことにがっかりしました。幸いなことに、誰かが私の心を読んで、このダンディな小さなプログラムuHerbert(別名mu-Herbertまたはmicro-Herbert)をコード化したに違いありません。 H(言語仕様) プログラムはロボットのシミュレーションですが、ロボットを動かすためだけのプログラミング言語Hのインタプリタとしても機能します。 3つの指示があります。 S:ロボットは1セル前に進みます L:ロボットは所定の位置で左に90度回転します R:ロボットは正しい位置に90度回転します 関数、パラメータ、および再帰という3つの標準プログラミング機能を自由に使用できます。2つの異なるパラメータタイプがサポートされています。 数値パラメーター g(A):sslg(A-1) ここで、gは1つの数値パラメーターを持つ関数です。これはボイラープレートコードです。この後、関数を呼び出して引数を渡すことにより、実際のプログラムを作成できます。 g(4) これにより、関数が4回呼び出され、パラメータAがゼロの値に達すると、再帰が自動的に終了します。 g(4) = sslg(4-1) = sslg(3) = sslsslg(2) = sslsslsslg(1) = sslsslsslssl 機能パラメーター 機能パラメーターを使用することもできます。これは、基本的に、渡した命令を再現するだけです。 f(A):rAlA したがって、この関数を呼び出して命令を渡すと、次のように評価されます。 f(ss) = rsslss f(sslssr) = rsslssrlsslssr その他の構文 関数は複数のパラメーターを持つことができ、両方のタイプを持つこともできます。あるいは、パラメータを持たない場合もあります。以下は、どちらも有効な関数です。 j:ssss k(A,B):Ajjjk(A,B-1) ご覧のとおり、関数jはパラメーターを取らず、関数kは両方のタイプのパラメーターを取ります。上記のように、Aは機能パラメーターで、Bは数値パラメーターです。 無限再帰 無限再帰も許可されていますが、開始できるのは1回だけであり、最後の白いパッドを踏んだときに効果的に終了します(灰色のパッドを踏んだことはありません)。 m:sslssrm 条件を解決する 目標は、ロボットにすべての白いパッドを踏ませ、灰色のパッドを踏まないようにすることです。白いパッドは、それぞれが少なくとも1回踏まれている限り、何回でも踏むことができます。ロボットは、到達可能なグリッド内の任意のポイントを踏むことができます(一部のレベルにはバリア壁があり、このレベルでは灰色のパッドが一種のバリアとして機能します)。 …

3
λ計算で数値のリストをソートする
純粋な型付けされていないラムダ計算に、教会でエンコードされた数値のリストに適用されると、昇順または降順で並べ替えられた数値を返す用語を記述します。教会のリストと番号は、通常のADTの折りたたみとしてエンコードする必要があります。 -- Usual ADTs for Lists and Nats (in Haskell, for example) data List a = Cons a (List a) | Nil data Nat a = Succ (Nat a) | Zero -- Their respective folds are the λ-calculus representation used on this challenge church_list = (λ c n . (c …

4
2つのカウンターマシン上のCollat​​zシーケンス
このCollat​​zシーケンス正の整数nから開始し、このように定義されています。 nが偶数の場合は、2で割ります(n' = n / 2) nが奇数の場合は、3を掛けて1を加えます(n' = 3n + 1) nが1に達するまで上記の反復を繰り返します。 最初に選択された正の整数に関係なく、シーケンスが最終的に数値1に到達するかどうかは不明です(これは数値理論では未解決の主要な問題です)。 A 2つの逆マシン(2CM)非負の整数値を保持することができ、次の命令セットを用いてプログラムすることができる2つのレジスタを備えたマシンです。 INCX increase the value of register X INCY increase the value of register Y JMP n jump to instruction n DJZX n if register X is zero jump to instruction n, otherwise decrement its value …

3
NANDロジックゲートを使用して双方向ユニバーサルロジックプロセッサを構築する
2ウェイ汎用ロジックプロセッサ(2ULP)は、二つの入力線とる論理ゲートのネットワークであるAとB、同様に他の4つの入力をL_、L_a、L_b、およびL_ab、単一の出力を生成するL(a, b)4つの使ってL真理値表関数として入力: とが両方のL_場合A、2ULPが返されます。B0 それは返すL_a場合A = 1とB = 0。 それは返すL_b場合A = 0とB = 1。 それは返すL_ab場合AとBの両方です1。 例えば、入力所与L_ = 0、L_a = 1、L_b = 1、及びL_ab = 0、出力はL(a, b)に等しくなりますA xor B。 あなたの仕事は、NANDゲートのみを使用して、できるだけ少ないNANDゲートを使用して2ULPを構築することです。物事を簡略化するために、図でAND、OR、NOT、およびXORゲートを使用し、以下の対応するスコアを使用できます。 NOT: 1 AND: 2 OR: 3 XOR: 4 これらのスコアはそれぞれ、対応するゲートを構成するために必要なNANDゲートの数に対応しています。 最も少ないNANDゲートを使用して正しい構成を生成する論理回路が優先されます。

1
Turtle Graphicsバージョン2
ほとんどの人はおそらく、当初Logoによって人気を得た有名なTurtle Graphicsプログラムについて聞いたことがあるでしょう。この課題は、選択した言語でTurtle Graphicsプログラムを実装することです。 ルール: 床は対角線でなければならず、ユーザーがstd-inを介してフォームx/yに入力した寸法は、xとy長さをそれぞれ表します。 x20 y以下、45以下である可能性があります。 ペンがダウン状態の場合、タートルが出る四角形(x / y座標)とタートルが入る四角形の両方を描画する必要があります。これが実際の生活で起こることなので、それがあなたのプログラムがすべきことです。 カメの初期位置及び方向は、フォームにユーザによって入力されなければならないx,y,d場合、xおよびyx軸とy軸上の位置であり、それぞれ、及びd方向、として入力されU、D、R、またはL(上下、右、左)。 カメが壁にぶつかった場合は、カメを停止してエラーメッセージを表示する必要があります。つまり、カメは壁を歩くことができません。 カメはこれらのコマンドを含まなければなりません: RESET-ボードを空白にリセットします-カメは最初の位置と方向に戻ります。 DRAWとERASE-これらのコマンドは、タートルをそれぞれ描画と消去に設定します。 UPおよびDOWN-これらの2つのコマンドは、アクティブなツール(ペンまたは消しゴム)の位置をそれぞれ上および下に設定します。 DIRECTION x-このコマンドは、亀を北、北東、東、南東、南、南西、西、または北西の任意の方向に向けます。数字1〜8で表され、北(上)が1、北東が2 ... FORWARD xx-タートルxxの正方形を前進させます。FORWARD 15は、タートルを15マス前進させます。カメがWのN、E、S、に面している場合、xその方向にのみ正方形で描画されます。タートルがNE、NW、SE、またはSWに面している場合はx、両方向に正方形で描画されます。つまり、NEに面しているFORWARD 1では、次のように描画されます。 X X DISPLAY- X塗りつぶされた四角(x / y座標)に使用するボードを表示し、空の四角に空白スペースを表示します。 POSITION-カメのx / y座標をボードに印刷します。 SETPOS xyd- dDIRECTIONコマンドと同じ表記法を使用して、タートルをx / y座標方向に設定します。 STOP-ボードを表示し、ユーザーが文字を入力した後にプログラムを終了します~。 コマンドの例: 方向2フォワード1方向4フォワード1: X X X 方向2フォワード1方向4フォワード4: X X X X X 方向3フォワード5: …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.