私は新しいプラットフォームを試していて、60文字以下の文字列を処理するプログラムを書こうとしています。データストアに、有名なまたはよく知られた小さなコードのチャンクをいくつか追加します。方程式とは、プログラミングと数学が私のソフトウェアのテーマに沿っているからです。コードの長さは、合計60文字未満であれば、どの言語でも、数学のあらゆる分野の方程式でもかまいません。私は人々がいくつかを壊すつもりだと思う brainfuck これのために。
例えば、
#include<stdio.h>
int main(){printf ("Hi World\n");return 0;}
まさに60文字!
あなたの知恵をどうもありがとう!
古典的なC文字列コピールーチンは、最近ではあまり知られていません。
while (*d++ = *s++);
1行ではありませんが、世界の最後のCバグを提示します。
status = GetRadarInfo();
if (status = 1)
LaunchNukes();
私はAPLのConwayのGame of Lifeをたくさん見かけます:
追加のボーナスは、これにより、Unicodeを正しく処理していることを確認できることです。
有名なPerlワンライナーの修正バージョン:
/^.?$|^(..+?)\1+$/
この正規表現は、長さが素数の文字列に一致します。
元のバージョンは次のとおりです。
/^1?$|^(11+?)\1+$/
これは、1の素数で構成される文字列に一致します。
クイックソート:
qsort [] = []
qsort (x:xs) = qsort (filter (< x) xs) ++ [x] ++ qsort (filter (>= x) xs)
リストが空の場合、ソートされた結果は空のリストになります。
リストが要素xで始まり、リストの残りがxsである場合、ソートされた結果は、x未満のxs内のすべての要素と、要素xがすべてのソートされたリストと連結されて連結されたリストから構成されるリストです。 xsの要素がxより大きい。
(または言い換えると、すべてxより小さく、すべてxより大きな2つの山に分割し、両方を並べ替えて、小なり山、要素x、および大なり山のリストを作成します)。
Cバージョンの理解を簡単に上回ります。
私が最初にbashフォークボムを見つけたとき、それは本当に甘いと思いました。
:(){ :|:& };:
print "hello world\n";
そしてその派生物は人気があるようです。 :-)
偶数を検出する方法:
x % 2 == 0
import this
Python。
コメントは改行を含むことができないため、編集:Python便利なインタープリターがない場合、これは出力です
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!
ジョークスレッドでのBigownの回答(およびコメント)の礼儀:
[ $[ $RANDOM % 6 ] == 0 ] && rm -rf /* || echo Click #Roulette
(これは62文字の長さなので、コメント(そのように機能しますか?)または必須でないスペースを削除できます。)
r n=take(n+1)$iterate(\a->zipWith(+)(0:a)$a++[0])[1]
52文字、スペースを追加して味わってください。コメントの「エフェミエント」の礼儀 ここ 。
これは、[〜#〜] j [〜#〜]と[〜#〜] k [〜#〜](まだHaskellのユーザーではありませんが)。
2行ではありませんが、これは非常に有名です。
void swap(float* x, float* y)
{
float t;
t = *x;
*x = *y;
*y = t;
}
実際、一部の言語では1行で説明できます。 Luaが思い浮かびますが、まだまだあります。
x, y = y, x
私のお気に入りのラムダ計算の例は、Y Combinatorです。
Y = λf.(λx.f (x x)) (λx.f (x x))
K&R、の演習から、指定した数に設定されているビット数を返す関数を次に示します。 58文字で:
int bits(int n){int b=0;while(n){n=n&(n-1);b++;}return b;}
設定したビット数に比例して時間がかかります。ここの「あはは」の部分は
n = n & (n - 1)
n
から右端のセットビットを削除します。
無限フィボナッチ数列(Haskell)
fibs = 0 : 1 : zipWith (+) fibs (tail fibs)
DO 10 I=1.3
これは、歴史上最も高価なバグの1つです。このFortranステートメントは、1.3の浮動小数点値をDO10I
という名前の変数に割り当てます。
正しいコード-10とラベル付けされたステートメントまでのループ繰り返しステートメントのヘッダーと、値1、2、3を受け入れるループ変数I
DO 10 I=1,3
ダフのデバイス :
void send(short *to, short *from, int count)
{
int n = (count +7 ) / 8;
switch (count % 8) {
case 0: do { *to = *from++;
case 7: *to = *from++;
case 6: *to = *from++;
case 5: *to = *from++;
case 4: *to = *from++;
case 3: *to = *from++;
case 2: *to = *from++;
case 1: *to = *from++;
} while(--n > 0);
}
}
トムダフは、メモリマップされたポートの書き込みを展開し、世界で最も奇妙なCコンストラクトの1つに書き込みました。
val (minors, adults) = people.partition(_.age < 18)
上記のScalaコードパーティションpeople
(Person
sのリスト)は、それぞれの年齢に基づいて2つのリストに分割されます。
Javaで同じことを行うには、次の多くのコードが必要です。
List<Person> minors = new ArrayList<Person>();
List<Person> adults = new ArrayList<Person>();
for(Person p : people) {
if(p.age < 18) {
minors.add(p);
} else {
adults.add(p);
}
}
3番目の変数を使用せずに2つの変数の値を交換する。これは、プログラミングで最初に言われたことの1つで、「うーん...それはかっこいい」
int a,b;
b=a-b;
a=a-b;
b=a+b;
ブラックマジック ジョンカーマックから
float Q_rsqrt( float number )
{
long i;
float x2, y;
const float threehalfs = 1.5F;
x2 = number * 0.5F;
y = number;
i = * ( long * ) &y; // evil floating point bit level hacking
i = 0x5f3759df - ( i >> 1 ); // what the ****?
y = * ( float * ) &i;
y = y * ( threehalfs - ( x2 * y * y ) ); // 1st iteration
// y = y * ( threehalfs - ( x2 * y * y ) ); // 2nd iteration, this can be removed
return y;
}
8バイト(Python)で表すことができる最大数
print '\n'.join("%i Byte = %i Bit = largest number: %i" % (j, j*8, 256**j-1) for j in (1 << i for i in xrange(8)))
これは60文字を少し超えていますが、実際には変数の命名に依存しています(そのため、ここに含めます!)
readLines(rdr:StreamReader)=
seq {一方、rdr.EndOfStreamではありません
yield rdr.ReadLine()}
F#でファイルを1行ずつシーケンスに読み込むための素晴らしい関数。
「x」軸の周りの回転を安価で高速かつ簡単に近似する場合:
d = 0.0001;
y = y + z * d;
z = z - Y * d;
これは概算ですが、エラーに気づくことはありません
無限フィボナッチ数列 Scalaの場合:
val fibs: Stream[BigInt] = 0 #:: 1 #:: { for((x, y) <- fibs.Zip(fibs.tail))
yield x + y }
これは QuineJargon File からC:
char * f = "char * f =%c%s%c; main(){printf(f、34、f、34,10);}%c"; main(){printf(f 、34、f、34,10);}
そこにもLISPバージョンもありますが、他の多くのが浮かんでいます。
数学の世界で最も美しい数字をリンクするオイラーのアイデンティティ:1、0、e、i、およびπ:e ^ i(π)+ 1 =
Hello Worldに関することは何でも頭に浮かびます。複数の言語を保存する場合は、さまざまなバリエーションを使用できます。
もっと重要なものとして、 Fibbonacci があります。
条件演算子:
minVal =(a <b)? a:b;
Switch case
for-eachループ [Java]
私は良いものを持っていて、それをマージンに書き留めました。
int gcd(int a, int b)
{
while(b>0)
{
int t = a%b;
a=b;
b=t;
}
return a;
}
おそらく有名ではありませんが、私のお気に入りの1つです。ほとんどの場合、それが機能する理由はすぐにはわかりません。
私はC#の新しい機能がnullではない値を返すのが好きです。
var notnull = userInputName ?? "Captain NEMO";
そしてそれらのラムダもかなり甘いです:
Func<int, int, int> addfn = (a, b) => a + b;
Func<int, int> addtwofn = (a) => addfn(a, 2);
var result = addtwofn(5); // returns 7
有名ではありませんが、nの平方根を計算する恐ろしい方法で、結果はnになります。
for(double r=1;r!=n;n=r==(r=0.5*(r+(n<0?-n:n)/r))?r:n);
そして、はい、負の数の処理は正しくありません。
再帰的に文字列を反転
if ( str.length() <= 1) { return str; // stopping case }
else { return reverse(str.substring(1)) + str.charAt(0); // recursion }