Dodaj kartkę Dodaj bana
Powód wlepienia kartki
Wybierz wątek docelowy z listy lub wpisz jego ID
  • Anonim

    witajcie...

    http://sztorcj.ae.krakow.pl/konkurs...

    pod tym linkiem jest konkurs, ktory jest na mojej uczelni na dodatkowe punkty... owszem, program napisalem.. ale ma miec jak najmniej lini... a mi wychodzi o jakies 15 za duzo :/

    może macie pomysł ?!

    stawiam zgrzewę piwa dla tego, kto mi pomoże.. obiecuję !!!!
  • nablaone

    Liczba linii to zły pomiar. Lepiej było by ile bajtów zajmuje źródło, albo skomplikowana klasa.

    Moja wersja ma 24 linie (bez pustych linii i definicji tabeli) i jest kod jest IMHO nadal czytelny :-)

  • Anonim

    a coś bliżej ?! koleś mówi, że można zrobić w mniej niż 10... wariat... macie pomysły ?!

    piwo nadal aktualne !!!

    no i kod by się przydał :]
  • Anonim

    czy mozna uzywac rekurencji?
  • nablaone

    oto mój kod, z błedem a co :-)


    public class x {

    static int x,y;

    static char[][] tab ={{'e',' ','I','n','f','o','r'},
    {'i','n','o','m','i','c','m'},
    {'w','o','a','d','e','z','a'},
    {'o','k','k','A','m','n','t'},
    {'k','E',' ','a','i','a','y'},
    {'a','r','K',' ','w',' ','k'},
    {'k','o','r','I','I',' ','a'} };

    static void g(int dx, int dy, int l) {
    for(int i = 0; i < l; i++) {
    System.out.print(tab[y][x]);
    x +=dx;
    y +=dy;
    }
    }

    static void k(int l, int d) {

    g(d,0,l);

    if(x<0) {
    return;
    }

    g(0,d,l);
    k(++l, d);
    }

    public static void main(String a[]) {
    x = y = tab.length/2;
    k(1,-1);
    System.out.println();
    }
    }
  • Anonim

    Nie ma ograniczeń co do metody... Ma mieć tylko jak najmniej lini kodu !

    nabla: też kminiłem w podobny sposób... tylko, że nie śmiga... :/
  • яazo я

    a jakieś dokładniejsze info o ilości linii ?
    bo ja np. zawsze otwieram blok w nowej linii, czyli po 'for', 'if' itd zawsze ENTER i dopiero '{'
  • Anonim

    liczy się każda funkcja... czyli np.

    static void dupsko()
    {

    }

    ale również....

    int x;

    itd... analogicznie do nawiasów przy 'if' czy czymkolwiek...

  • яazo я

    ok, nie znam pana organizatora i nie do końca wiem co mu chodzi po głowie, ale można skrócić kod jeszcze tak:

    zamiast:

    static void g(int dx, int dy, int l)
    {
    for(int i = 0; i < l; i++)
    {
    System.out.print(tab[y][x]);
    x +=dx;
    y +=dy;
    }
    }


    napisac:

    static void g(int dx, int dy, int l)
    {
    for(int i = 0; i < l; i++, x+=dx,y+=dy)
    System.out.print(tab[y][x]);
    }

    i co? (w innych miejsca też da się tak zrobić) jest to poprawne i równoważne, ale czy o to chodzi?

  • Anonim

    o właśnie... tu chyba chodzi raczej o znanie dokładnie składni... ta opcja rzeczywiście skraca sporo... gj!
  • Karwer

    No, 4 instrukcje :) Ale kod wysylam tylko autorowi watku, jesli on chce go zaprezentowac, to prosze, a jesli nie, to trudno :)

    Pozdrawiam
  • Karwer

    Jednak 6 nie 4 przy tamtym sposobie liczenia chyba.

    Pozdrawiam
  • Anonim

    No chłopaki mamy zwycięzcę....

    Oficjalnie ogłaszam, że piwo (w jakiś sposób) wędruje to KARWERA !!!

    Naprawdę świetny pomysł i wyszło chyba 3 linijki (jeśli się przy liczeniu nie mylimy)... Za jakiś czas wrzucę go na forum... Ale to za jakiś czas...

    Pozdro dla wszystkich !
  • nablaone

    Chętnie zobacze.

    Tak i tak najlepsze skracanie kodu to w Perlu wychodzi :-).

  • Karwer

    Zgadzam sie, ale wydaje mi sie, ze przy takim podejsciu prostym nie wystarczylaby tylko jakas mocno zamieszana skladnia. Oczywiscie troche jej tez jest konieczne; )
  • яazo я

    i ?

    zdradzisz kod ?