タグ付けされた質問 「c」

この課題はC言語に関連しています。回答が特定の言語であることが必要な課題は、一般的に推奨されないことに注意してください。

13
シェルピンスキー層
はじめに、そのような下に線を追加することにより、パターンのようなシェルピンスキーの三角形/\を作成することができます... ゆるい枝/または\2つの枝に再び分割されます/\。 ブランチの衝突は、その\/下に何も(スペースはありません)死んでしまいます。 これらの規則を繰り返すと、 /\ /\/\ /\ /\ /\/\/\/\ /\ /\ /\/\ /\/\ etc... (ViHartによるインスピレーション) 正の整数Nを取り込んで、このパターンの最初のN行をstdoutに出力するプログラムまたは関数を作成します。必要以上に先行または後続のスペースはありません。 たとえば、入力が1出力の場合、 /\ 入力が2出力の場合 /\ /\/\ 入力が8出力の場合 /\ /\/\ /\ /\ /\/\/\/\ /\ /\ /\/\ /\/\ /\ /\ /\ /\ /\/\/\/\/\/\/\/\ 等々。 最小バイトのコードが優先されます。

4
実用的な数値を計算する
定義 正の整数nは、すべてのより小さい正の整数がの別個の約数の合計として表される場合に限り、実用的な数値(OEISシーケンスA005153)ですn。 たとえば18、実用的な数値です。除数は1、2、3、6、9、18であり、18より小さい他の正の整数は次のように形成できます。 4 = 1 + 3 5 = 2 + 3 7 = 1 + 6 8 = 2 + 6 10 = 1 + 9 11 = 2 + 9 12 = 3 + 9 = 1 + 2 + 9 = 1 + 2 + 3 …
18 code-golf  sequence  number-theory  code-golf  code-challenge  sorting  c  code-golf  restricted-source  code-golf  natural-language  code-golf  tree-traversal  file-system  popularity-contest  pi  polyglot  code-golf  game  sliding-puzzle  code-golf  game  minesweeper  code-challenge  ascii-art  code-challenge  popularity-contest  graphical-output  code-challenge  popularity-contest  hello-world  underhanded  obfuscation  code-golf  code-golf  function  code-golf  code-golf  code-golf  popularity-contest  rosetta-stone  code-golf  primes  code-golf  restricted-source  popularity-contest  number  sequence  code-golf  restricted-source  popularity-contest  graphical-output  code-golf  popularity-contest  code-golf  primes  code-golf  game  code-golf  math  popularity-contest  popularity-contest  code-generation  popularity-contest  code-bowling  code-golf  popularity-contest  underhanded  code-golf  metagolf 

1
Cプリプロセッサを作成する
目標は、C言語用のプリプロセッサを、ソースコードのサイズ(バイト単位)の点で、希望する言語でできるだけ小さくすることです。入力はCソースファイルになり、出力は前処理されたソースコードになります。 処理できる必要があるアイテムは、コメントの削除(行/ブロック)、#includeディレクティブ(相対パスでファイルを開き、必要なポイントでテキストを置き換える)、#define、#undef、#if、 #elif、#else、#endif、#ifdef、#ifndef、defined()。#pragmasや#errorsなどの他のCプリプロセッサディレクティブは無視されます。 #ifディレクティブで算術式や比較演算子を計算する必要はありません。式がゼロ以外の整数を含んでいる限り、式はtrueと評価されます(その主な用途はdefined()ディレクティブです)。可能な入力および出力の例は次のとおりです(出力ファイル内の余分な空白は、見た目をよくするために削除されました。コードでそうする必要はありません)。次の例を適切に処理できるプログラムで十分です。 ----Input file: foo.c (main file being preprocessed) #include "bar.h" // Line may or may not exist #ifdef NEEDS_BAZZER #include "baz.h" #endif // NEEDS_BAZZER #ifdef _BAZ_H_ int main(int argc, char ** argv) { /* Main function. In case that bar.h defined NEEDS_BAZ as true, we call baz.h's …
18 code-golf  string  c 

7
C:AES FIPS-197 SubBytesテーブルを定数時間コードに置き換えます
FIPS-197(高度暗号化標準 AESとしても知られているが)、これは、多用なるSubBytesように実装することができ、 unsigned char SubBytes(unsigned char x) { static const unsigned char t[256] = { 0x63,0x7C,0x77,0x7B,0xF2,0x6B,0x6F,0xC5,0x30,0x01,0x67,0x2B,0xFE,0xD7,0xAB,0x76, 0xCA,0x82,0xC9,0x7D,0xFA,0x59,0x47,0xF0,0xAD,0xD4,0xA2,0xAF,0x9C,0xA4,0x72,0xC0, 0xB7,0xFD,0x93,0x26,0x36,0x3F,0xF7,0xCC,0x34,0xA5,0xE5,0xF1,0x71,0xD8,0x31,0x15, 0x04,0xC7,0x23,0xC3,0x18,0x96,0x05,0x9A,0x07,0x12,0x80,0xE2,0xEB,0x27,0xB2,0x75, 0x09,0x83,0x2C,0x1A,0x1B,0x6E,0x5A,0xA0,0x52,0x3B,0xD6,0xB3,0x29,0xE3,0x2F,0x84, 0x53,0xD1,0x00,0xED,0x20,0xFC,0xB1,0x5B,0x6A,0xCB,0xBE,0x39,0x4A,0x4C,0x58,0xCF, 0xD0,0xEF,0xAA,0xFB,0x43,0x4D,0x33,0x85,0x45,0xF9,0x02,0x7F,0x50,0x3C,0x9F,0xA8, 0x51,0xA3,0x40,0x8F,0x92,0x9D,0x38,0xF5,0xBC,0xB6,0xDA,0x21,0x10,0xFF,0xF3,0xD2, 0xCD,0x0C,0x13,0xEC,0x5F,0x97,0x44,0x17,0xC4,0xA7,0x7E,0x3D,0x64,0x5D,0x19,0x73, 0x60,0x81,0x4F,0xDC,0x22,0x2A,0x90,0x88,0x46,0xEE,0xB8,0x14,0xDE,0x5E,0x0B,0xDB, 0xE0,0x32,0x3A,0x0A,0x49,0x06,0x24,0x5C,0xC2,0xD3,0xAC,0x62,0x91,0x95,0xE4,0x79, 0xE7,0xC8,0x37,0x6D,0x8D,0xD5,0x4E,0xA9,0x6C,0x56,0xF4,0xEA,0x65,0x7A,0xAE,0x08, 0xBA,0x78,0x25,0x2E,0x1C,0xA6,0xB4,0xC6,0xE8,0xDD,0x74,0x1F,0x4B,0xBD,0x8B,0x8A, 0x70,0x3E,0xB5,0x66,0x48,0x03,0xF6,0x0E,0x61,0x35,0x57,0xB9,0x86,0xC1,0x1D,0x9E, 0xE1,0xF8,0x98,0x11,0x69,0xD9,0x8E,0x94,0x9B,0x1E,0x87,0xE9,0xCE,0x55,0x28,0xDF, 0x8C,0xA1,0x89,0x0D,0xBF,0xE6,0x42,0x68,0x41,0x99,0x2D,0x0F,0xB0,0x54,0xBB,0x16}; return t[x];} この関数は任意ではありません。これは可逆マッピングであり、ガロア体の反転とそれに続くアフィン変換で構成されます。詳細はすべて、FIPS-197セクション5.1.1またはここのセクション4.2.1(わずかに異なる名前の下)にあります。 テーブルとしての実装の1つの問題は、いわゆるキャッシュタイミング攻撃にさらされることです。 したがって、あなたの使命はSubBytes()、一定の動作を示す上記の機能の正確な代替を考案することです。の入力xに依存するものSubBytesが使用されない場合もそうだと仮定します。 配列インデックスとして、 制御オペランドとしてif、while、for、case、またはオペレータ?:; オペレータの任意のオペランドとして&&、||、!、==、!=、<、>、<=、>=、*、/、%。 演算子の右オペランドとして>>、<<、*=、/=、%=、<<=、>>=。 勝ちのエントリでは、単項演算子のための5の重量と、入力に依存するデータパスで実行されるオペレータの数から得られた最も低いコストを有するもの、であろう-と~十分ほど<<1、>>1、+1、-1。他のすべての演算子の重み7、他のカウントとのシフト、または他の定数の加算/サブ(型キャストとプロモーションは無料)。原則として、そのコストはループを展開しても変化せず、入力には依存しませんx。タイブレーカーとして、空白とコメントを削除した後の最短コードでの答えが勝ちます。 UTCの2013年にできるだけ早くエントリを回答として指定する予定です。私はある程度の知識がある言語での回答を検討し、サイズに最適化されていないCへの単純な翻訳としてランク付けします。 好意的なオペレーター、無料のキャストとプロモーション、およびサイズのランキングの最初の省略+1および謝罪-1。*単項の場合と乗算の両方で禁止されていることに注意してください。

1
正規表現の検証正規表現[終了]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Code Golf Stack Exchangeのトピックになるようにします。 去年閉鎖されました。 入力として正規表現文字列を受け入れ、それが有効かどうかを確認する正規表現を作成します。基本的に、正規表現はそれ自体を検証できるはずです。(無効な正規表現は検証されないため、使用できません.*。;) フレーバーは、よく知られている実装(Perl、sed、grep、gawkなど)によって完全にサポートされている必要があり、それらの実装がサポートするものを完全にサポートしている必要があります。[弁護士が話すことを心配しないでください。私は、スマート***の可能性のある抜け穴を削除しようとしています。] 私はそれをコードゴルフしたいと思いますが、機能が豊富ではないフレーバーを知って使用している人々に優位性を与えるのではないかと心配しています。または、私の心配は根拠がありませんか?
17 code-challenge  code-golf  code-golf  game  sudoku  code-challenge  math  ai-player  code-challenge  sorting  rosetta-stone  code-challenge  code-challenge  programming-puzzle  code-golf  number  code-golf  maze  code-golf  math  regular-expression  code-golf  sequence  code-golf  graph-theory  code-golf  string  word-puzzle  natural-language  brainfuck  metagolf  optimized-output  fastest-algorithm  code-golf  game-of-life  cellular-automata  code-golf  puzzle-solver  grid  code-golf  combinatorics  binary-tree  popularity-contest  code-challenge  code-golf  ascii-art  kolmogorov-complexity  brainfuck  metagolf  code-golf  c  date  code-golf  word-puzzle  crossword  word-search  code-golf  code-golf  quine  code-golf  string  random 

3
Brainfuckのビット演算子
あなたの仕事は、以下の二項演算子のそれぞれに対して1つのBrainfuckプログラムを作成することです。各プログラムは、入力から1つまたは2つの8ビット数(AおよびB)を取得し、指定された操作を計算する必要があります。 A XOR B A AND B A OR B A Shifted Left by 1 (circular shift) NOT A 5つすべてを実装する必要はありません。スコアは次の方法で計算されます。 #totalCharacters + {4000 * #problemsNotCompleted} したがって、有効なスコアはゼロ(最高)から20,000(何も完了していない)までです。 結果を保存する場所や、入力を保存するかどうかは気にしません。8ビットセル、および必要なだけの空のセルを右側にのみ想定します。 最適なメモリ位置に番号がすでにあると仮定することができるので、IO操作を心配する必要はありません。
13 code-golf  binary  brainfuck  code-golf  code-golf  ascii-art  random  code-golf  code-golf  code-challenge  sorting  code-golf  code-challenge  java  code-golf  statistics  code-golf  code-challenge  fastest-code  code-golf  math  code-golf  math  kolmogorov-complexity  code-golf  code-golf  array-manipulation  combinatorics  code-golf  kolmogorov-complexity  popularity-contest  underhanded  code-golf  math  floating-point  code-golf  interpreter  code-golf  music  code-golf  code-golf  cryptography  code-challenge  scrabble  code-golf  code-challenge  popularity-contest  quine  code-golf  quine  cryptography  code-golf  kolmogorov-complexity  code-golf  printable-ascii  code-golf  chess  code-golf  math  number-theory  code-challenge  c  code-golf  random  popularity-contest  hello-world  code-shuffleboard  code-golf  compression  grammars  code-golf  tips  code-golf  sequence  code-golf  string  code-challenge  sorting  permutations  code-golf  string  code-challenge  optimization  code-golf  interpreter  code-challenge  string  code-golf  math  number  fibonacci  string  compression  c#  code-golf  chemistry  popularity-contest  math  c  c++  java  code-golf  math  function  code-golf  complex-numbers  code-golf  geometry 

6
私の「ゴルフ前」のゴルフC
バックグラウンド 私の場合は、コード・ゴルフ Cでの提出、私は処理ツールを必要としています。他の多くの言語と同様に、空白はCソースではほとんど関係ありません(常にではありません!)-それでもコードは人間にとってはるかにわかりやすいものになります。単一の冗長な空白を含まない完全にゴルフされたCプログラムは、ほとんど読み込めません。 そのため、空白やコメントを含むコードゴルフの提出のためにCでコードを書くのが好きなので、プログラムは書き込み中にわかりやすい構造を保ちます。最後のステップは、すべてのコメントと余分な空白を削除することです。これは退屈で心のない作業であり、コンピュータープログラムのインターンが実際に行う必要があります。 仕事 次の規則に従って、「事前ゴルフ」されたCソースからコメントと冗長な空白を削除するプログラムまたは関数を作成します。 \行の最後の文字として(バックスラッシュ)がある行継続。これを見つけた場合は、次の行を同じ論理行の一部として扱う必要があります(たとえば、他の操作を行う前に、\および次の行\n(改行)を完全に削除できます)。 コメントは、で始まる1行形式のみを使用し//ます。したがって、それらを削除するには//、文字列リテラルの外側で遭遇する論理行の残りを無視します(以下を参照)。 空白文字は(スペース)、\t(タブ)および\n(改行なので、ここでは論理行の終わりです)。 空白のシーケンスを見つけたら、その周囲の空白以外の文字を調べます。もし 両方とも英数字またはアンダースコア(範囲[a-zA-Z0-9_])または 両方とも +か 両方とも -か 前のものは/、次のものは* 次に、シーケンスを単一のスペース()文字にます。 それ以外の場合は、シーケンスを完全に削除します。 このルールにはいくつかの例外があります。 プリプロセッサディレクティブは、出力の独自の行に表示する必要があります。プリプロセッサディレクティブは、次で始まる行です#です。 文字列リテラルまたは文字リテラル内では、空白を削除しないでください。任意の"(二重引用符)/ '直接バックスラッシュの奇数が付け加えていません(単一引用符)は、( \)が開始または終了する文字列リテラル / 文字リテラルを。文字列と文字リテラルは、それらが開始した同じ行で終了することが保証されています。文字列リテラルと文字リテラルはので、入れ子にすることができない'内部の文字列リテラルと同様に、"内部の文字はリテラル特別な意味を持っていません。 I / O仕様 入力と出力は、改行文字を含む文字シーケンス(文字列)、または改行文字を含まない文字列の配列/リストのいずれかでなければなりません。配列/リストの使用を選択した場合、各要素は行を表すため、改行は暗黙的です各要素の後にに追加されます。 入力は有効なCプログラムのソースコードであると想定できます。これは、印刷可能なASCII文字、タブ、改行のみが含まれることも意味します。不正な形式の入力に対する未定義の動作は許可されています。 前後の空白/空行は許可されません。 テストケース 入力 main() { printf("Hello, World!"); // hi } 出力 main(){printf("Hello, World!");} 入力 #define max(x, y) \ x > …
12 code-golf  c 

1
有効な迷路の数
与えられたWxHグリッドを、どのように多くの可能な迷路がありますか? 迷路について知っていること: グリッドのH高さは正確に正方形で、W幅は正方形です。 開始、終了、空の3つのタイプの正方形があります。迷路には、開始と終了がそれぞれ1つだけ含まれている必要があり、残りのすべての正方形は空です。 迷路全体を囲む壁があります。 以下の規則に違反しない限り、壁は任意の2つの正方形の間のエッジに存在できます。 開始広場から終了広場までのパスが存在する必要があります。 したがって、との2つの数値を指定するWとH、可能な正方形/壁構成の数を表す単一の数値を返す必要があります。あなたは保証されていますW*H > 1 たとえば、2x2迷路の100構成はまったく異なります。 これはコードゴルフなので、最短の答えが勝ちです!

5
リスク、Warlight Way
前書き このゲームでは、プレイヤーは自分の軍隊を使用して他のプレイヤーの軍隊と戦い、領土を占領し、最後の男になります。各ターンで、プレイヤーは基本数の軍隊を受け取り、自由に使用できます。ただし、特定の地域の領土をキャプチャすることで、プレイヤーはこの数を増やして、ゲームの後半で潜在的な利点を与えることができます。(これは基本的にWarlightと同じです)。 すべてのボットは、Java、C、またはC ++で作成する必要があります(他の言語も含めますが、ソフトウェアや経験はありません)。サブミッションでクラスを拡張する必要はありません。関数、クラス、インターフェイスなど、必要なものを作成し、標準 APIのパッケージまたはクラスを使用できます。クラスまたはインターフェイスの作成を計画している場合は、内部クラスまたは内部インターフェイスの使用を検討してください。 このコンペティションのコントローラーまたは他の提出物をプログラムで変更しようとしないでください。 ゲームプレイ 概要 10x10の2次元配列は、各要素/セルが「領域」を表すボードをシミュレートします。20ラウンドがあり、ラウンドごとに最大1000ターンがあります。各ターンでは、プレイヤーはまず所有している地域のいずれかに軍隊を配備し、次に、自分の軍隊を攻撃して敵の領土を占領するために、近くの領土に軍隊を輸送する機会を与えられます。プレイヤーはすべてを展開する必要がありますの軍隊をますが、必要に応じて移動する必要はありません。 軍隊の攻撃/移送 プレイヤーが望むなら、彼/彼女は1つの領域から8つの隣接する領域のいずれかに軍隊を送ることができます。ボードは「ラップアラウンド」します。つまり、プレイヤーの領域が一方の側にある場合、そこからの軍隊は反対側の隣接する領域に移動できます。軍隊を領土から移動させる場合、その領土には少なくとも1つの軍隊が残っている必要があります。たとえば、テリトリーに5つの軍隊が含まれる場合、異なるテリトリーに移動できるのは4つまでです。領土に領土が含まれている場合、その軍隊は移動できません。 プレイヤーnが所有する領土から別の領土に軍隊を送った場合、その領土はn軍隊を受け取ります。 プレイヤーがn自分の領土からo軍隊を含む敵の領土に軍隊を送ったとしましょう。最も近い整数に丸められてo減少しn * .6ます。ただし、同時に、最も近い整数に丸められてn減少しo * .7ます。敵の領土が占領されているかどうかに関する次の規則が適用されます。 場合oに達するがゼロn0より大きい場合、プレイヤーが持っているであろう、領土を引き継ぎますnことに軍隊を。 両方の場合nとo、ゼロになりますo自動的に1に設定され、領土をキャプチャされません。 o0よりも大きい場合、プレイヤーの領土内の軍隊の数は増加しn、敵の領土は占領されません。 ボーナス ボーナスを表すために、テリトリーのグループが選択されます。1人のプレイヤーがグループの一部であるすべての領土を所有している場合、そのプレイヤーはターンごとに追加の軍隊を受け取ります。 ボーナスには、プレーヤーが受け取ることができる追加の軍隊を表すさまざまなIDと値を示すID番号があります。各ラウンドでは、ボーナスの値は5〜10の乱数で、フィールドには10のボーナスがあり、それぞれに10のテリトリーが含まれています。 たとえば、1ターンに5つの軍隊を受け取るプレーヤーが、値8のボーナスを構成するすべての領域を所有している場合、そのプレーヤーは次のターンと後続のターンに13の軍隊を受け取ります。ただし、プレイヤーがボーナスを構成する1つまたは複数の領域を失った場合、彼または彼女は1ターンあたりわずか5軍を受け取ります。 入出力 プログラムは、次の形式のコマンドライン引数を使用して入力を受け取る必要があります。 [id] [armies] [territories (yours and all adjacent ones)] [bonuses] ["X" (if first turn)] idそしてarmies両方とも整数です。idあなたのIDでありarmies、あなたの領土に展開する必要がある軍隊の数です。与えられたすべての軍隊を配備する必要があります-これ以上でもそれ以下でもありません。 territoriesは、所有している地域と、所有していない地域に隣接する、所有していない地域を表す一連の文字列です。文字列は次の形式です。 [row],[col],[bonus id],[player id],[armies] rowそしてcol領土がボードの行と列を示し、bonus idこの領域がその一部となっているボーナスのIDであり、player id領土を所有しているプレイヤーのID、およびarmies地域に含まれる軍隊の数です。これらはすべて数字です。 bonusesあなたが利用できるボード上のボーナスを表す一連の文字列です。文字列は次の形式です。 [id],[armies],[territories left] …
12 king-of-the-hill  c  c++  java 

15
比較演算子なしでCまたはC ++の2つの整数を比較する
(stdinまたは引数として)入力として2つの符号付き整数を取り、最初の数が(1)より大きい、(2)より小さい、または(3)2番目に等しいかどうかに応じて3つの異なる出力を表示する最短プログラムを生成します数。 キャッチ プログラムでは次のいずれも使用できません。 標準の比較演算子:<、>、<=、>=、==、!=。 離れてからの任意のライブラリ・ファイルconio、stdioまたはiostream。 非ASCIIまたは印刷不能ASCII文字。 勝者 最短文字数のプログラムが勝ちます。

7
Cコード圧子
状況:あなたは高校の教師で、コンピューティングクラスにCプログラムの書き方を教えています。ただし、これは用語の始まりに過ぎないため、インデントとスペースの重要性については教えていません。あなたが彼らの作品に印をつけていると、あなたの目はとても痛くなり、あなたは苦痛に悲鳴を上げ、これが続くことができないことに気づきます。 タスク:任意の言語で、有効なCソースコードを入力として受け取り、適切にフォーマットされたプログラムを作成することにしました。人気のコンテストなので、適切にフォーマットされたコードを決定する必要があります。できるだけ多くの機能を実装することをお勧めします。以下に例を示します。 各行の前に適切なインデントを追加します 後にスペースを追加,変換例えば、およびその他の演算子をint a[]={1,2,3};しますint a[] = {1, 2, 3};。ただし、文字列リテラル内で演算子を処理しないでください。 各行の末尾のスペースを削除します ステートメントを複数の行に分割します。たとえば、生徒が書いtmp=a;a=b;b=tmp;たり、int f(int n){if(n==1||n==2)return 1;else return f(n-1)+f(n-2);}すべてを1行にしたりする場合、それらを別の行に分割できます。forただし、ループには注意してください。セミコロンが含まれていますが、分割する必要はないと思います。 各関数を定義した後に新しい行を追加します 生徒のコードを理解するのに役立つ他の機能もあります。 受賞基準:これは人気コンテストなので、ほとんどの賛成票で答えが勝ちます。同点の場合、実装されているほとんどの機能を備えた答えが優先されます。それが再び同点の場合、最短のコードが優先されます。 回答には、実装した機能のリスト、およびサンプルの入力と出力を含めることをお勧めします。 編集:ここのコメントで要求されているのはサンプル入力ですが、これは参照用であり、できるだけ多くの機能を実装することをお勧めします。 入力: #include <stdio.h> #include<string.h> int main() { int i; char s[99]; printf("----------------------\n;;What is your name?;;\n----------------------\n"); //Semicolon added in the string just to annoy you /* Now we take …

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 /などを手動で設定するのではなく、テストに使用できます。

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 

14
CでのGolfed + Fastソート
[ 最新の更新:ベンチマークプログラムと暫定版が利用可能、以下を参照] そこで、古典的なアプリケーションであるソートを使用して、速度と複雑さのトレードオフをテストしたいと思います。 浮動小数点数の配列を昇順で並べ替えるANSI C関数を記述します。 あなたは使用することはできません任意のライブラリ、システムコール、マルチスレッドまたはインラインASMを。 エントリは、コード長とパフォーマンスの2つのコンポーネントで判断されます。スコアは次のとおりです。エントリは、長さ(空白なしの#charactersのログなので、フォーマットを維持できます)およびパフォーマンス(ベンチマークの#secondsのログ)、および各間隔[best、worst]に線形に正規化されます0,1]。プログラムの合計スコアは、2つの正規化されたスコアの平均になります。最低スコアが勝ちます。ユーザーごとに1つのエントリ。 ソートは(最終的に)適切に行われる必要があります(つまり、入力配列には戻り時にソートされた値が含まれる必要があります)。名前を含む次の署名を使用する必要があります。 void sort(float* v, int n) { } カウントされる文字:sort関数に含まれる文字、署名が含まれ、それに呼び出される追加の関数(ただし、テストコードは含まれません)。 プログラムはfloat、長さ> = 0、最大2 ^ 20の任意の数値と配列を処理する必要があります。 sortテストプログラムにプラグインとその依存関係をプラグインし、GCCでコンパイルします(派手なオプションはありません)。たくさんの配列をそこに入れて、結果の正確さと合計実行時間を確認します。テストは、Ubuntu 13のIntel Core i7 740QM(Clarksfield)で実行されます。 アレイの長さは、許容される範囲全体に渡り、短いアレイの密度が高くなります。値はランダムで、ファットテール分布(正と負の両方の範囲)になります。重複した要素はいくつかのテストに含まれます。 テストプログラムはこちらから入手できます。https : //gist.github.com/anonymous/82386fa028f6534af263 提出物をとしてインポートしuser.cます。TEST_COUNT実際のベンチマークのテストケースの数()は3000です。質問のコメントでフィードバックを提供してください。 締め切り:3週間(2014年4月7日、16:00 GMT)。2週間後にベンチマークを掲載します。 競合他社にコードを渡さないように、締め切り近くに投稿することをお勧めします。 ベンチマーク発行時点での予備結果: いくつかの結果があります。最後の列は、スコアをパーセンテージで示しており、高いほど良いので、ジョニーケージが1位になります。他のアルゴリズムよりも桁違いに遅いアルゴリズムをテストのサブセットで実行し、時間を推定しました。Cのものqsortは比較のために含まれています(ジョニーの方が高速です!)。終了時に最終比較を行います。

5
m3ph1st0sのプログラミングパズル3(C):「簡単なバグ」[終了]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新することがありますので、上のトピックコードゴルフスタックExchange用。 4年前に閉鎖されました。 これは私のシリーズのC / C ++パズルの3番目です。最初の2つを見逃した場合、それらはここにあります:(1)m3ph1st0sのプログラミングパズル1(C ++) (2)m3ph1st0sのプログラミングパズル2(C ++): "Call hard!" 私のパズルは100%オリジナルだと言わなければなりません。そうでない場合、私は常にテキストでそう述べます。私の3番目のパズルには、次の2つの部分があります。 パズル3.1 この部分(3.1)は私のオリジナルのパズルではなく、私が少し前に読んだインターネットのページから集められたものです。ここであなたの出発点とウォームアップとしてそれを使用します。これを解決してから、2番目の部分に進みます。 誰かが「+」記号を20回印刷しようとして、次のプログラムを思いつきました。 #include <stdio.h> int main() { int i; int n = 20; for( i = 0; i < n; i-- ) printf("+"); return 0; } 期待した結果が得られなかったという事実は明らかです-プログラムは終了しません。修理する!簡単?ここで、1文字のみを変更してプログラムを修正します-もちろんスペース以外の文字です!この課題には3つの解決策があります。3つすべてを見つけます。明確にするために、プログラムは20個の「+」記号を出力し、高速で終了する必要があります。「高速」が何を意味するかを批判する前に、それはせいぜい数秒であることを言います(ちなみにそれは多すぎますが、それを明確にするためだけです)。 パズル3.2 EDITED これは、以前の3.2.2パズルのためのソリューションは、コンパイラに依存かもしれないことを私に指摘しました。主題に関する考えられる議論を排除するために、論争を引き起こさないように特別な注意を払うときに、アイデアを修正し、次のパズルでそれを改善します。ただし、このパズルを継続するために、3.2.2を少し修正します(ソリューションは簡単ですが、よりクリーンになります)。 パズルを初めて見たとき、私はそれがかなりすごいと思いました。私は何とかそれを解決しましたが、すぐにではなく、注意を払う必要がありました。あなたがここにいるなら、あなたもそれを解決したことを意味します。すべての可能な文字をすべての可能な値に置き換えて、すべてのソリューションをテストするプログラムを作成してこれを行った場合、あなたは失われます。一生懸命働いています。20個の「+」記号を書き込むプログラムを修正しました。 3.2.1:結果が有効で、修正された3つのプログラムすべてで同じものが出力されるように、コードに1文字だけを挿入します。言うまでもなく、この文字はmainを囲む}の前にある必要があります(プログラムの後に文字を入れただけで、コンパイラが非常に友好的だったのは聞きたくないからです)。 編集(以下を参照)-これらの最後の質問では、カウンターiが0ではなく-1から始まることを考慮してください。 3.2.1.5:出力が少なくとも19個の「+」記号であるという条件で、以前のすべての問題を繰り返します(ただし、出力は有限です)。スペースの変更は許可されています。これで、最初のケースよりも多くの解決策が見つかりました。これらのいくつかは、3.2.2の質問に最も確実に適合します。 3.2.2:別の値を選択して変数nを初期化し、結果の出力が3.2.1.5の少なくとも1つの修正されたプログラムで同じになるようにします(すべてのプログラムである必要はありません)。 …

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