Montako erinlaista jonoa 6 ihmisestä muodostuu

Siis aina on jonossa kaikki 6 ihmistä.

Millä ohjelmointikielellä tämän tehtävän ratkaisu vie vähiten merkkejä?
44339
Äänestä

Muut lukivat myös

Vastaukset 44

Vanhimmat

C vei 123 merkkiä.

#include <iostream>
int f( int n)
{ if (n == 0) { return 1; } return n*f(n-1); }
int main() { std::cout << f(6) << "\n"; }

Äänestä

Yksi jono jossa kaikki samat kusipäät.

Äänestä

Erinlaista ei yhtään, erilaisia voi jokunen tullakin.

Äänestä
  • Tuo on ihan homokieltä tuo "erilaisia". Erinlaisia tai erillaisia tuntuu sopivan miehen suuhun paremmin, ku se miehe siitin, jota nämä torjunta-aineiden tuottamat homot lutkuttaa...

    Äänestä

  • Anonyymi kirjoitti:

    Tuo on ihan homokieltä tuo "erilaisia". Erinlaisia tai erillaisia tuntuu sopivan miehen suuhun paremmin, ku se miehe siitin, jota nämä torjunta-aineiden tuottamat homot lutkuttaa...

    Eikö tämä homojenasiantuija ja äidinkielen opettaja osanneet laskea, vai eivätkö tiedä vaan tietotekniikasta mitään.

    Äänestä

  • Anonyymi kirjoitti:

    Tuo on ihan homokieltä tuo "erilaisia". Erinlaisia tai erillaisia tuntuu sopivan miehen suuhun paremmin, ku se miehe siitin, jota nämä torjunta-aineiden tuottamat homot lutkuttaa...

    Asiantuntija vastaa taas.

    Äänestä

  • Anonyymi kirjoitti:

    Eikö tämä homojenasiantuija ja äidinkielen opettaja osanneet laskea, vai eivätkö tiedä vaan tietotekniikasta mitään.

    Olet joku homo ja et tajua meitä normaaleja. Katoppa Areenasta ohjelma, jossa kasvismyrkyt aiheuttaa rotillekkin homostelua.

    Äänestä

#! /bin/bash
expr 6 \* 6

Äänestä
  • Tämä on väärin!

    Äänestä

  • Anonyymi kirjoitti:

    Tämä on väärin!

    Kerroppa arvuuttelia tuo, kun alat päteä, ! Tasan on oikein, ellei jonosta aleta hyppimään ristiinrastiin toiseen jonoon, siittähän tulee loputon?

    Äänestä

Täällä on niin vähän tietotekniikasta jotain tietäviä, että jos ne kaksi osaajaa jotain kirjoittelee, heti haukutaan homoksi.

Äänestä
  • Ohjelmien rustaaminen ei ole koko tietotekniikka.

    Äänestä

  • Anonyymi kirjoitti:

    Ohjelmien rustaaminen ei ole koko tietotekniikka.

    Ei täällä kukaan ole mitään rustannut, vai missä olisi?
    T:; Keppi Keinonen

    Äänestä

  • Ei kukaan ole haukkunut ketään.

    Äänestä

JS, 42 merkkiä

var f=n=>n<2?1:n*f(n-1);console.log(f(6));

Äänestä
  • Tämä on oikein.

    Äänestä

Pyyttönillä.

#! /bin/python3
n=6
tulos=1
while n>1:
    tulos*=n
    n-=1
print(tulos)

Äänestä
  • Tämä on väärin.

    Äänestä

  • Anonyymi kirjoitti:

    Tämä on väärin.

    6 * 5 * 4 * 3 * 2 * 1 = 720

    MOT

    Äänestä

Pyytton 3.8:lla voi käyttää perm-funktiota.

#! /bin/python3.8
from math import perm
print(perm(6))

Äänestä
  • Minulla änkäs jättiläispythoni aamun sarastaessa wc-pönttöön, ja siitä jatkoi matkaansa perämereen, nyt lisää kahvia ja tupakkia :-).. .. ... ...

    Äänestä

  • Anonyymi kirjoitti:

    Minulla änkäs jättiläispythoni aamun sarastaessa wc-pönttöön, ja siitä jatkoi matkaansa perämereen, nyt lisää kahvia ja tupakkia :-).. .. ... ...

    Et ole sitten Lehtomäen laitteistoa mökkiisi hommannut.

    Äänestä

  • Python 55 merkkiä.

    Tämä on oikein.

    Äänestä

  • 3.8:n toinen uusi matikkafunktio on comb. Esimerkiksi lottoarvonnan 39:stä pallosta saadaan 7 pallon vaihtoehtoja:

    >>> from math import comb
    >>> comb(39,7)
    15380937

    Äänestä

  • Anonyymi kirjoitti:

    3.8:n toinen uusi matikkafunktio on comb. Esimerkiksi lottoarvonnan 39:stä pallosta saadaan 7 pallon vaihtoehtoja:

    >>> from math import comb
    >>> comb(39,7)
    15380937

    Hienoa, onkohan siinä nyt kombinaatio, permutaatio vai variaatio laskusta kyse. Python tekee monet asiat yksinkertaisiksi loppukäyttäjälle.

    Äänestä

  • Anonyymi kirjoitti:

    Hienoa, onkohan siinä nyt kombinaatio, permutaatio vai variaatio laskusta kyse. Python tekee monet asiat yksinkertaisiksi loppukäyttäjälle.

    comb(n,k) laskee n!/(k!*(n-k)!), kun k<=n. Muussa tapauksessa palauttaa nollan.

    Äänestä

Bass Shell 48 merkkiä.

f=1;for((i=2;i<=6;i )){ f=$((f*i)); };echo $f;

Äänestä
  • Tämä on väärin.

    Äänestä

Ohjelmakoodi pitää kirjoittaa selkeäksi, ja sitä on kommentoitava lähdetiedostossa runsaasti, eikä suinkaan ole pyrittävä mahdollisimman kryptiseen lyhyyteen.

Äänestä
  • Tämä on oikein.

    Äänestä

  • Anonyymi kirjoitti:

    Tämä on oikein.

    Tuohan on kopioitu netistä. eikä edes oikein.

    Äänestä

PHP 50 merkkiä.

$f=1; for($i=1; $i<=6; $i ){$f=$f*$i;}; echo $f;

Äänestä
  • Tämä on oikein.

    huom. PHP:n interaktiivinen komentotulkki, käynnistetään:

    php -a

    Äänestä

Valitettavasti, rannalle jääneet ruikuttajat sotkivat tämän ketjun.

Äänestä

Heapin algoritmillä saattaisi onnistua.

Äänestä

Taskulaskimella ja Linuxin laskimella se on 2 merkin mittainen juttu.

6! ja Enteriä perään.

Joo, tiedän, ei kuulu asiaan suoranaisesti.

Äänestä
  • Mutta millainen algoritmi niissä laskimissa on sisällä?

    Äänestä

PERL 60 merkkiä.

'$f=1;for($i=1; $i<=6; $i=$i 1){$f=$f*$i;}; print($f,"\n")'

Ajetaan komentokehotteesta käsin:

perl -e

Äänestä

Pythonilla on jo ratkaisuja tullut, mutta tässä olisi vähän erilainen, funktionaalinen tapa, (58 merkkiä):

f=lambda n:reduce(lambda a,b:a*b,range(1,n 1))
print(f(6))

SageMath:issä olisi product-funktio valmiina (ja sen voi näköjään vielä lyhentää prod)

prod(range(1, 7))

Noh, jos kirjastojen käyttö sallitaan (Sage tietenkin on kokonaan oma kielensä eikä pelkkä Pythonin kirjasto), niin tuo jo mainittu math.perm on kaiketi paras. Onhan siinä aina importtauksesta tuleva koodin pituus, mutta itse koodi on sitten jo melko lyhyenläntä.

Äänestä

SPOILER ALERT!!!!
SE Code golfissa:
https://codegolf.stackexchange.com/questions/607/find-the-factorial

Poiminpa tähän nyt tuolta joitain ratkaisuja

JS, 17:
f=n=>!n||n*f(n-1)

Python, 27:
f=lambda x:0**x or x*f(x-1)

Haskell, 17:
f n=product[1..n]

C, 39:
double f(int n){return n<2?1:n*f(n-1);}

C, 23 (häcki!):
f(a){a=a>0?f(a-1)*a:1;}


Onhan tuolla lyhyempiäkin hieman esoteerisemmilla kielillä. Esim.
APL 4 merkkiä:
×/∘⍳
ja MATL 2 merkkiä:
:p

Noh, eikös tuo olisi jo melkein sama asia kuin laskimen "n!"? Ei kai, koska kyseessä lienee oikea ohjelmointikieli: ':' tekee listan ja 'p' laskee sen tulon. Missään ohjelmointikielessä ei asetettane kertomalle omaa merkkiään.

Äänestä

Approximatiivinen (Stirlingin kaava) ratkaisu Pythonilla.

import math

def f(n):
if n==0: return 1
return (2*math.pi*n)**0.5 * (
n/math.e)**n * (1 1.0/(12*n) 1/(288.0*n**2)
-139/(51840*n**3 - 571/(2488320*n**4))
)

Äänestä
  • No, ja piste (että tulee float laskut) nollat unohtu vika riviltä!

    Äänestä

Ensimmäinen on oikein.

Äänestä

C-kielellä:#include+<stdio.h>int+tulos=1;int+funktio(int+kertoja)+{    tulos=tulos*kertoja;    if+(kertoja>=2)+funktio(--kertoja);    return+tulos;}void+main(void)+{    printf("%d\n",funktio(6));}

Äänestä

Ketjusta on poistettu 6 sääntöjenvastaista viestiä.

Kommentoi aloitusta


Anonyymi kirjoitti:

Siis aina on jonossa kaikki 6 ihmistä.

Millä ohjelmointikielellä tämän tehtävän ratkaisu vie vähiten merkkejä?

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu