Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Programmier Beispiele

Erstellt von strike, 05.07.2014, 09:14 Uhr · 10 Antworten · 1.277 Aufrufe

  1. #1
    Avatar von strike

    Registriert seit
    08.12.2007
    Beiträge
    28.011

    Programmier Beispiele

    Bin zufällig auf die Seite 99 Bottles of Beer gestossen.
    Solche simplen Lösungen (Perl)

    Code:
    sub b{$n=99-@_-$_||No;"$n bottle"."s"x!!--$n." of beer"};$w=" on the wall";
    die map{b."$w,\n".b.",\nTake one down, pass it around,\n".b(0)."$w.\n\n"}0..98
    oder das hier (Python)

    Code:
    a,t="\n%s bottles of beer on the wall","\nTake one down, pass it around"
    for d in range(99,0,-1):print(a%d*2)[:-12]+t+a%(d-1 or'No')
    beeindrucken mich wirklich.

  2.  
    Anzeige
  3. #2
    ccc
    Avatar von ccc

    Registriert seit
    09.07.2011
    Beiträge
    3.949
    Zitat Zitat von strike Beitrag anzeigen
    ... Solche simplen Lösungen (Perl)
    Perl, die Urmutter aller Skriptsprachen, zumindest für Internetanwendungen, auch bekannt als WOL (Write-Only-Language), weil man zwar unheinlich viel sehr kurz gefasst programmieren kann, aber schon nach wenigen Tagen sein eigenes Skript nicht mehr durchschaut, weil es so unübersichtlich und daher schwer zu entziffern ist.

  4. #3
    Avatar von strike

    Registriert seit
    08.12.2007
    Beiträge
    28.011
    Das "simpel" hätte ich besser in Anführungszeichen setzen sollen.
    Natürlich hast Du recht: den Code sollte man eigentlich immer in kurzer Zeit nachvollziehen können.
    #Zumal wenn er nicht kommentiert ist

  5. #4
    Avatar von somtamplara

    Registriert seit
    23.03.2013
    Beiträge
    2.213
    Interessantes Thema
    Auf der Webseite ist ja die exakte Aufgabe beschrieben, naemlich genau diesen Liedtext wiederzugeben:
    99 Bottles of Beer | The lyrics to the song 99 Bottles of Beer

    99 bottles of beer on the wall, 99 bottles of beer.
    Take one down and pass it around, 98 bottles of beer on the wall.

    98 bottles of beer on the wall, 98 bottles of beer.
    Take one down and pass it around, 97 bottles of beer on the wall.

    <97 ..... 3>

    2 bottles of beer on the wall, 2 bottles of beer.
    Take one down and pass it around, 1 bottle of beer on the wall.

    1 bottle of beer on the wall, 1 bottle of beer.
    Take one down and pass it around, no more bottles of beer on the wall.

    No more bottles of beer on the wall, no more bottles of beer.
    Go to the store and buy some more, 99 bottles of beer on the wall.
    Viele der Programmbeispiele auf der Webseite machen es sich aber etwas zu einfach.
    Leerzeilen, Umbrueche alles nicht gerade korrekt.
    Da wird die Zeichensetzung schlicht "vergessen", Singular/Plural auch egal.
    Abspann auch "vergessen".
    Das teilweise auch fuer die obigen Zweizeiler.

    Habe mal ein Ruby Programm hergenommen und ein paar Fehlerchen korrigiert.
    Das ergibt dann ein einigermassen lesbares Programm, dass m.E. exakt den Liedtext abspult:

    Code:
    def bottles(of_beer, ending)
      print "#{of_beer} bottle#{ending} of beer on the wall, "
      print "#{of_beer} bottle#{ending} of beer.\n"
      print "Take one down, pass it around!\n\n"
    end
     
    99.downto(0) do |left|
      if left > 1
        bottles(left, "s")
      elsif left == 1
        bottles(left, "")
      else
        puts "No more bottles of beer on the wall, no more bottles of beer."
        puts "Go to the store and buy some more, 99 bottles of beer on the wall."
      end
    end
    "left" steht hier natuerlich nicht fuer "links", sondern fuer "uebrig".
    Klar, man kann das Programm noch eindampfen (auf Kosten der Lesbarkeit).

    Geprueft hiermit:
    Execute Ruby Programs Online

    Auf der Webseite kann man auch die Perl und Python Version testen.

  6. #5
    Avatar von wansuk

    Registriert seit
    24.04.2005
    Beiträge
    968
    Zitat Zitat von somtamplara Beitrag anzeigen
    ...
    Das teilweise auch fuer die obigen Zweizeiler...
    Das Perlbeispiel läuft bei mir korrekt durch.
    Was du meinen?

    Gut, strike hätte es etwas "schöner" formatiert einstellen können, aber ansonsten sehr gut lesbar. Tut das was es tun soll.



  7. #6
    Avatar von somtamplara

    Registriert seit
    23.03.2013
    Beiträge
    2.213
    Sollte auch keine Grundsatzkritik sein.
    Bin als langjaehriger SW Tester eben etwas penibel

    Neben der etwas legeren Formatierung, sparen sich halt beide Beispiele den korrekten Abgesang (wo sich der Kreis schliesst und man das Lied wieder von vorne beginnen koennte):

    No more bottles of beer on the wall, no more bottles of beer.
    Go to the store and buy some more, 99 bottles of beer on the wall.
    sparen sich halt beide Beispiele.

  8. #7
    Avatar von ReinerS

    Registriert seit
    01.01.2007
    Beiträge
    243
    Muss es mir peinlich sein, wenn ich von dem ganzen "Zeug" kein Wort versteh?

    Zitat Zitat von strike Beitrag anzeigen
    Bin zufällig auf die Seite 99 Bottles of Beer gestossen.
    Solche simplen Lösungen (Perl)

    Code:
    sub b{$n=99-@_-$_||No;"$n bottle"."s"x!!--$n." of beer"};$w=" on the wall";
    die map{b."$w,\n".b.",\nTake one down, pass it around,\n".b(0)."$w.\n\n"}0..98
    oder das hier (Python)

    Code:
    a,t="\n%s bottles of beer on the wall","\nTake one down, pass it around"
    for d in range(99,0,-1):print(a%d*2)[:-12]+t+a%(d-1 or'No')
    beeindrucken mich wirklich.
    mfg
    Reiner

  9. #8
    Avatar von strike

    Registriert seit
    08.12.2007
    Beiträge
    28.011
    Zitat Zitat von ReinerS Beitrag anzeigen
    Muss es mir peinlich sein, wenn ich von dem ganzen "Zeug" kein Wort versteh? ...
    Neee, natürlich nicht.
    Zumal es extrem "komprimierter" Code ist, für dessen Verständnis selbst Profis etwas länger als ein paar Sekunden brauchen dürften ;)

    Leute wie ich sowieso.
    Seit ein paar Jahren habe ich beruflich nichts mehr wirklich konkret damit zu tun.
    Zu Hause ab und an mal ein und wenn notwendig dann in der Regel #bash.
    Da tut man sich dann mit so etwas sehr schnell sehr schwer.

  10. #9
    Avatar von somtamplara

    Registriert seit
    23.03.2013
    Beiträge
    2.213
    Mir ist auch nicht peinlich, dass ich keine Noten lesen kann

    Noch was mit Thailand Bezug
    Ruby Script fuer Jahressteuersatz in Thailand fuer PKW und 4 tuerige Pickups.
    Sehr simpel gemacht, in der ersten Zeile Hubraum in ccm eintragen.

    Code:
    h = 2500
    if h <= 600 then
        tax = h*0.5
    elsif h <=1800
        tax = 300 + (h-600)*1.5
    else
        tax = 2100 + (h-1800)*4.00
    end
    print "Hubraum ", h, " ccm: \n"
    i = 1
    1.0.step(0.5, -0.1) {|f|
        print i, ". Jahr: " if i != 6
        print "\nab 6. Jahr: " if i == 6
        print (tax*f).round(2), " Baht \n"
        i+=1
    }
    print "\n"
    Hubraumstaffeln bei 600 ccm, 1800 ccm.
    10% abnehmend pro Jahr bis zum 6. Jahr.

    Beispielausgabe fuer 2500 ccm.

    Hubraum 2500 ccm:
    1. Jahr: 4900.0 Baht
    2. Jahr: 4410.0 Baht
    3. Jahr: 3920.0 Baht
    4. Jahr: 3430.0 Baht
    5. Jahr: 2940.0 Baht

    ab 6. Jahr: 2450.0 Baht
    Kann man wieder hier ausprobieren und variieren:
    http://www.compileonline.com/execute_ruby_online.php

  11. #10
    Avatar von x-pat

    Registriert seit
    06.11.2003
    Beiträge
    7.208
    Zitat Zitat von strike Beitrag anzeigen
    Code:
    sub b{$n=99-@_-$_||No;"$n bottle"."s"x!!--$n." of beer"};$w=" on the wall";
    die map{b."$w,\n".b.",\nTake one down, pass it around,\n".b(0)."$w.\n\n"}0..98
    Oh je. Wenn jemand solchen Code in unser System eincheckt, würde der Continuous Integration Server sofort fehlende Doc-Kommentare, fehlende Formatierung und fehlenden Unit Test anmeckern und den Programmierer bei Wiederholung nach Kasachstan zwangsversetzen.



    Cheers, X-pat

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. EU-VerArsche - was wir uns alles gefallen lassen am Beispiel der Glühbirne.
    Von K98 im Forum Politik und Wirtschaft außerhalb Thailands
    Antworten: 69
    Letzter Beitrag: 30.11.17, 22:46
  2. Das Dilemma der kommunalen Eigenbetriebe wird an einem Beispiel aufgezeigt
    Von socky7 im Forum Politik und Wirtschaft außerhalb Thailands
    Antworten: 17
    Letzter Beitrag: 07.10.14, 13:07
  3. Sehenswertes? Beergirls zum Beispiel?
    Von abstinent im Forum Touristik
    Antworten: 71
    Letzter Beitrag: 05.01.06, 17:47
  4. Positive beispiele einer beziehung
    Von MenM im Forum Ehe & Familie
    Antworten: 28
    Letzter Beitrag: 26.11.04, 21:10