Welche Programmiersprachen haben noch eine große Zukunft vor sich, welche gelten als veraltet?



  • Michael E. schrieb:

    puts IO.read("test.txt").bytes.inject(Hash.new(0)){|h,i| h[i]+=1;h}.map{|k,v| "'#{k.chr}' -> #{v}"}.sort
    

    Ruby
    Codegolfen?

    warum nicht ... hier die optimierte smalltalk-Version in 56 Zeichen + Filename:

    (FileStream fileNamed: 'foo.txt') contents asBag sortedElements
    

    und mit Ausgabe auf Transcript, 20 Zeichen mehr:

    (FileStream fileNamed: 'foo.txt') contents asBag sortedElements printOn: Transcript
    


  • wftftw schrieb:

    Braucht man da eine klingonische Tastatur zum Programmieren?

    http://en.wikipedia.org/wiki/File:APL-keybd2.svg



  • lolor schrieb:

    Ja? Ich brauche in Python immer mehr Zeilen, aber wahrscheinlich bin ich zu schlecht. Mal ein einfaches Beispiel: Lies eine Textdatei ein, erstelle eine map für Buchstaben/Häufigkeit im Text und gib diese sortiert aus. Ich würde gerne ein schönes Python 3 Script dafür sehen. (Sollte ja kein Aufwand sein.)

    Da du es ja mit wenig Zeilen haben wolltest: 😉

    file = open('c:/Dem_lolor_sein_Post.txt', 'r').read()
    print(''.join( (k+' '+str(v)+'\n') for k, v in sorted(dict((c, file.count(c)) for c in file).items(), reverse=True, key=lambda x: x[1])))
    
    48
    e 40
    i 26
    n 20
    h 16
    s 14
    a 13
    r 13
    t 13
    c 12
    l 9
    u 7
    d 6
    b 5
    f 5
    m 5
    . 4
    o 4
    g 3
    p 3
    w 3
    ü 3
    , 2
    B 2
    I 2
    P 2
    S 2
    T 2
    k 2
    y 2
    x 2
    ) 1
    ( 1
    / 1
    3 1
    : 1
    ? 1
    A 1
    H 1
    J 1
    M 1
    L 1
    Z 1
    ä 1
    j 1
    ö 1
    z 1
    


  • ich würde sagen, diese Runde code golfen ging an smalltalk, oder schafft es jmd in < 56 Zeichen (+ Filename) ?

    (FileStream fileNamed: 'foo.txt') contents asBag sortedElements
    


  • oder schafft es jmd in < 56 Zeichen (+ Filename) ?

    Wie sieht die Ausgabe aus? So wie die von Dobi?

    Ansonsten zwei Haskellversionen, die allerdings beispielsweise folgende Ausgabe erzeugen (wenn mittels print ausgegeben):
    fromList [('a',10),('b',13)]
    (Wobei fromList nur in der ersten Version vorkommt)

    Version 1:
    Benötigt noch ein import Data.Map und import Control.Applicative

    fromListWith(+).flip zip(repeat 1)<$>readFile "foo.txt"

    Version 2:
    Benötigt noch import Data.List und wieder import Control.Applicative

    map(\s->(head s,length s)).group.sort<$>readFile "foo.txt"

    Ist natürlich wegen der ganzen weggelassenen Leerzeichen ziemlich hässlich, ist aber etwas kürzer als die Smalltalkversion.

    Edit: Sehe gerade, dass du die Leerzeichen gar nicht mitgezählt hast...



  • deine haskell Version 1 kommt auf 89 Z plus Filename, wenn ich mich nicht verzählt habe.

    die Leerzeichen habe ich bei mir mitgezählt, den Filenamen natürlich nicht (die Anführungszeichen aber schon), denn dessen Länge hat ja mit der Progsprache nichts zu tun.



  • !rr!rr_. schrieb:

    deine haskell Version 1 kommt auf 89 Z plus Filename, wenn ich mich nicht verzählt habe.

    Wie zählst du?

    fromListWith(+).flip zip(repeat 1)<$>readFile ""
    map(\s->(head s,length s)).group.sort<$>readFile ""
    (FileStream fileNamed: '') contents asBag sortedElements
    

    Ich zähle 48, 51, 56.

    Edit: ah, vermutlich hast du die Imports mitgezählt. Würde ich nicht machen, die kann man abhängig von der Umgebung auch anders einbinden.



  • !rr!rr_. schrieb:

    ich würde sagen, diese Runde code golfen ging an smalltalk, oder schafft es jmd in < 56 Zeichen (+ Filename) ?

    (FileStream fileNamed: 'foo.txt') contents asBag sortedElements
    

    Na das kann ich ja nicht auf mir sitzen lassen 😉

    h={};IO.read("foo.txt").chars{|i|h[i]||=0;h[i]+=1};h.sort    # bzw.
    h=Hash.new(0);IO.read("foo.txt").chars{|i|h[i]+=1};h.sort
    


  • ich würde sagen, diese Runde code golfen ging an smalltalk

    ... oder eine von smalltalk inspirierte Sprache, natürlich 😋



  • Michael E. schrieb:

    h={};IO.read("foo.txt").chars{|i|h[i]||=0;h[i]+=1};h.sort    # bzw.
    h=Hash.new(0);IO.read("foo.txt").chars{|i|h[i]+=1};h.sort
    

    PS. wo ist'n da die Ausgabe? puts(h.to_s) oder sowas liefert bei mir nur wirre Zeichen



  • Gibts bei dir ne Ausgabe?



  • Wenn ich mich an die Konvention halte, dass Schlüssel und Werte mit Leerzeichen und verschiedene Einträge mit Newlines getrennt werden, komme ich auf

    h={};IO.read("foo.txt").chars{|i|h[i]||=0;h[i]+=1};puts h.sort.map{|o|o*" "}
    


  • na klar: Die Ausgabe, die von der Form

    {($A->9). ($B->5). ($C->3). ...($y->14)}
    

    ist, erhalte ich wahlweise mit dem Tastendruck ctrl-p oder print-it aus dem Kontextmenü des Ausdrucks, oder programmgesteuert mit

    0 logCr: (FileStream fileNamed: 'foo.txt') contents asBag sortedElements
    

    (65 Zeichen plus Filename)



  • Bezug:

    Michael E. schrieb:

    Gibts bei dir ne Ausgabe?



  • es steht jetzt 65:69 zugunsten von smalltalk :xmas2:



  • Die Ausgabe ist ja aber nicht ganz so schön. 😉

    Hab grad mal im Python-Forum nachgefragt. Es geht wesentlich eleganter als ich das gemacht hatte. Nämlich so:

    import collections as c
    with open("c:/Dem_lolor_sein_Post.txt","r")as f:
        print("\n".join("{} {}".format(*t)for t in c.Counter(f.read()).most_common()))
    


  • 61 Zeichen plus Filename:

    0logCr:(FileStream fileNamed:'foo.txt')contents asBag sortedElements
    


  • !rr!rr_. schrieb:

    es steht jetzt 65:69 zugunsten von smalltalk :xmas2:

    Wir müssen uns schon einigen, ob wir nur eine irgendwie formatierte Ausgabe oder eine Ausgabe mit festem Format wollen. In beiden Fällen liege ich im Moment vorne.

    unformatiert:

    h={};IO.read("foo.txt").chars{|i|h[i]||=0;h[i]+=1};puts h.sort
    0logCr:(FileStream fileNamed:'foo.txt')contents asBag sortedElements
    

    Ohne explizite Ausgabe:

    (FileStream fileNamed: 'foo.txt') contents asBag sortedElements
    h={};IO.read("foo.txt").chars{|i|h[i]||=0;h[i]+=1};h.sort
    

    Formatiert hast du noch nichts gezeigt.



  • die Aufgabe bestand in alphabetisch sortierter Ausgabe. Ein hash "6fzdt21r8h42k 16z5zghdjzs..." ist keine solche Ausgabe. Mein snippet liefert:

    {($A->9). ($B->5). ($C->3). ...($y->14)}
    

    Es steht 61Z : 69Z zugunsten smalltalk.



  • Es steht 61Z : 69Z zugunsten smalltalk.

    Wie kommst du darauf? Michaels Beispiele sind doch kürzer.


Anmelden zum Antworten