it-swarm-eu.dev

Jaké jsou některé slavné jednořadé nebo dvouřadé programy a rovnice?

Experimentuji s novou platformou a snažím se napsat program, který se zabývá řetězci, které nejsou delší než 60 znaků, a rád bych naplnil úložiště dat některými slavnými nebo známými malými kousky kódu a rovnice, protože programování a matematika souvisí s tématem mého softwaru. Kód může být v jakémkoli jazyce a rovnicích z jakéhokoli oboru matematiky, pokud jsou kratší než celkem 60 znaků. Mám podezření, že lidé za tohle vypuknou brainfuck .

Například,

#include<stdio.h>
int main(){printf ("Hi World\n");return 0;}

Přesně 60 znaků!

Díky moc za vaši moudrost!

22
BeachRunnerJoe

Klasická rutina kopírování v řetězci C je známa stále méně a méně lidí těmito dny:

while (*d++ = *s++);
34
Macneil

ne jeden řádek, ale představuji poslední C chybu na světě:

    status = GetRadarInfo();
    if (status = 1)
      LaunchNukes();
26
Darel

Vidím Conwayovu hru života v APL, jak se hodně vznáší:

Bonus navíc spočívá v tom, že zajistíte správné zacházení s unicode.

Upravená verze slavné perlské jednoplášťové lodi:

/^.?$|^(..+?)\1+$/

Tento regulární výraz odpovídá řetězcům, jejichž délka je nejvyšší.

Původní verze je:

/^1?$|^(11+?)\1+$/

který odpovídá řetězcům sestávajícím z prvočísla 1 s.

19
Barry Brown

Quicksort:

qsort []     = []
qsort (x:xs) = qsort (filter (< x) xs) ++ [x] ++ qsort (filter (>= x) xs)

Pokud je seznam prázdný, tříděným výsledkem je prázdný seznam.

Pokud seznam začíná prvkem x a zbytek seznamu je xs, pak je výsledkem seřazený seznam sestávající ze tříděného seznamu sestávajícího ze všech prvků v xs méně než x zřetězených s prvkem x zřetězeným se seřazeným seznamem všech prvky v xs větších než x.

(nebo jinými slovy - rozdělte je na dvě hromady, všechny menší než x a všechny větší než x, oba je řaďte a vytvořte seznam s méně než hromádkou, prvkem x a větší než hromádkou).

Pomáhá srozumitelnost verze C docela snadno.

14
user1249

Když jsem poprvé přišel na bash forkbomb, myslel jsem, že je to opravdu sladké.

:(){ :|:& };:
13
Matt
  1. funkce Ackerman . Implementace verze Ackermann-Péter by měla zapadat do 60 znaků :)

  2. Tato krásná hexadecimální konstanta: 0x5f3759df. Je to srdce nejvíce WTFing kódu, jaký jsem kdy viděl: rychlý inverzní druhotný kořen .

  3. Slavný XOR swap .

  4. question = /(bb|[^b]{2})/

13
back2dos
print "hello world\n";

a jeho odvození se jeví jako populární. :-)

12
the Tin Man

Protože zmiňujete rovnice, patří tato do vašeho seznamu:

e^{i\pi}+1=0

( vykreslování Wolfram Alphae i pi + 1 = 0)

10
Macneil

Jak detekovat sudá čísla:

x % 2 == 0
7
frogstarr78

import this v Pythonu.


ÚPRAVA jako komentáře nemohou obsahovat zalomení řádků: Pro ty, kteří nemají užitečný interpret = Python interpret je užitečný), je to výstup

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!
7
MAK

Unixová ruleta (NEBEZPEČÍ!)

S pozdravem Bigownovy odpovědi ve vtipném vlákně (a komentáři):

[ $[ $RANDOM % 6 ] == 0 ] && rm -rf /* || echo Click #Roulette

(To je 62 znaků, takže můžete odstranit komentář (fungovalo by to tak?) Nebo některé nepodstatné mezery.)

6
Mark C

Rekurzivní Pascalův trojúhelník v jedné linii (Haskell)

  r n=take(n+1)$iterate(\a->zipWith(+)(0:a)$a++[0])[1]

Padesát dva znaků, přidejte mezery podle chuti. S pozdravem „Efektní“ v komentáři zde .

Myslel jsem, že to byl lepší příklad než záhadná, ale krátká řešení v [~ # ~] j [~ # ~] a [~ # ~] k [~ # ~] (ačkoli nejsem dosud uživatelem Haskell).

6
Mark C

Ne docela 2 řádky, ale řekl bych, že je to docela slavné:

void swap(float* x, float* y)
{
    float t;
    t = *x;
    *x = *y;
    *y = t;
}

Některé jazyky to ve skutečnosti popisují v jednom řádku. Lua přijde na mysl, ale je jich víc.

x, y = y, x
6
ChaosPandion

Můj oblíbený příklad počtu lambda je Y Kombinator:

Y = λf.(λx.f (x x)) (λx.f (x x))
6
Macneil

Z cvičení v K&R, je zde funkce, která vrátí, kolik bitů je nastaveno v daném počtu. Na 58 znaků:

int bits(int n){int b=0;while(n){n=n&(n-1);b++;}return b;}

Trvá čas úměrný počtu nastavených bitů. Část "ah ha" je to

n = n & (n - 1)

Odebere nejvíce vpravo nastavený bit z n.

6
Macneil

Nekonečná Fibonacciho sekvence (Haskell)

fibs = 0 : 1 : zipWith (+) fibs (tail fibs)
5
Kendall Hopkins
DO 10 I=1.3

Toto je jedna z nejdražších chyb v historii. Tento příkaz Fortran přiřadí plovoucí hodnotu 1,3 proměnné pojmenované DO10I.

Správný kód - záhlaví opakujících se příkazů smyčky, dokud příkaz označený 10 a proměnná smyčky I nepřijímají hodnoty 1, 2, 3:

DO 10 I=1,3
4
azheglov

Duffovo zařízení :

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);
    }
}

Tom Duff rozvinul zápis paměti mapovaného do paměti do jednoho z nejpodivnějších konstrukcí C, jaký kdy svět viděl.

4
Jesse C. Slicer
val (minors, adults) = people.partition(_.age < 18)

Výše uvedený řádek Scala oddíly kódu people (seznam Persons) do dvou seznamů na základě jejich příslušných stáří.

K provedení stejné činnosti v jazyce Java je zapotřebí následujícího kódu:

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);
  }
}
2
missingfaktor

Zaměňování hodnot dvou proměnných bez použití třetí proměnné. To je jedna z prvních věcí v programování, které mi bylo řečeno, a myslela si: "Hmm ... to je super"

int a,b; 
b=a-b;
a=a-b;
b=a+b;
2
Jonathon

Černá magie od Johna Carmacka

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;
}
2
Rohan Monga

Největší číslo, které může představovat 8 Byte (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)))
2
ykombinator

Toto je něco přes 60 znaků, ale záleží to na pojmenování proměnných (takže to zahrnuji!)

nechť readLines (rdr: StreamReader) =
Seq {zatímco ne rdr.EndOfStream ano
Výnos rdr.ReadLine ()}

Pěkná malá funkce pro čtení souboru do sekvenčního řádku po řádku v F #.

1
Jetti

Pro levné, rychlé a snadné přiblížení rotace kolem osy x:

d = 0.0001;
y = y + z * d;
z = z - Y * d;

Je to přibližná hodnota, ale ne taková, na kterou byste si někdy všimli chyby

1
Hounshell

Nekonečná Fibonacciho sekvence v Scale:

val fibs: Stream[BigInt] = 0 #:: 1 #:: { for((x, y) <- fibs.Zip(fibs.tail)) 
                                           yield x + y }
1
missingfaktor

Toto Quine z Jargon File v C:

 char * f = "char * f =% c% s% c; main () {printf (f, 34, f, 34,10);}% c"; main () {printf (f , 34, f, 34,10);} 

K dispozici je také verze LISP, ale najdete mnoho dalších dalších, kteří se pohybují kolem, v téměř jakémkoli jazyce, který byste mohli zobrazovat ...

1
grkvlt

eulerova identita, která spojuje nejkrásnější čísla v matematickém vesmíru: 1, 0, e, i a π: e ^ i (π) + 1 =

1
numan

Něco společného s Hello World přichází na mysl. Pokud plánujete ukládání více jazyků, můžete jít s různými variantami.

Pro něco více netriviálního je Fibbonacci .

1
Peach
  1. Podmíněný operátor :

    minVal = (a <b)? a: b;

  2. Spínací skříňka

  3. pro každou smyčk [Java]

1
Chankey Pathak

Měl jsem dobrou a napsal jsem ji na okraj.

1
Tim
int gcd(int a, int b)
{
   while(b>0)
   {
      int t = a%b;
      a=b;
      b=t;
   }
   return a;
}

Pravděpodobně ne slavný, ale jeden z mých oblíbených. Pro většinu není hned zřejmé, proč to funguje.

1
Jeremiah Nunn

Líbí se mi novější funkce C # k vrácení ne nulové hodnoty:

var notnull = userInputName ?? "Captain NEMO";

A jejich lambdy jsou také docela sladké:

Func<int, int, int> addfn = (a, b) => a + b;
Func<int, int> addtwofn = (a) => addfn(a, 2);
var result = addtwofn(5); // returns 7
0
Genius

Není slavný, ale hrozný způsob výpočtu druhé odmocniny n, s výsledkem jako n.

for(double r=1;r!=n;n=r==(r=0.5*(r+(n<0?-n:n)/r))?r:n);

A ano, zpracování záporných čísel je nesprávné.

0
Anon

Reverzní řetězec rekurzivně

 if ( str.length() <= 1)  { return str; // stopping case } 
 else { return reverse(str.substring(1)) + str.charAt(0); // recursion   } 
0
pramodc84