Welche Programmiersprachen haben noch eine große Zukunft vor sich, welche gelten als veraltet?
-
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)]
(WobeifromList
nur in der ersten Version vorkommt)Version 1:
Benötigt noch einimport Data.Map
undimport Control.Applicative
fromListWith(+).flip zip(repeat 1)<$>readFile "foo.txt"
Version 2:
Benötigt nochimport Data.List
und wiederimport 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.
-
!rr!rr_. schrieb:
die Aufgabe bestand in alphabetisch sortierter Ausgabe. Ein hash "6fzdt21r8h42k 16z5zghdjzs..." ist keine solche Ausgabe.
Warum ignorierst du meinen Code? Und wie willst du auf die Ausgabe kommen?
irb(main):106:0> puts h {"d"=>1, "i"=>4, "e"=>11, "s"=>3, " "=>7, "t"=>4, "n"=>2, "\n"=>1, "r"=>4, "g"=>1, "h"=>2, "\xFC"=>1, "b"=>1, "m"=>1, "z"=>1, "l"=>1, "."=>1} => nil
Nix kryptisch. Und sortiert erhält mans dann, wenn man
sort
benutzt:irb(main):108:0> h={};IO.read("foo.txt").chars{|i|h[i]||=0;h[i]+=1};p h.sort [["\n", 1], [" ", 7], [".", 1], ["b", 1], ["d", 1], ["e", 11], ["g", 1], ["h", 2], ["i", 4], ["l", 1], ["m", 1], ["n", 2], ["r", 4], ["s", 3], ["t", 4], ["z", 1], ["\xFC", 1]] => [["\n", 1], [" ", 7], [".", 1], ["b", 1], ["d", 1], ["e", 11], ["g", 1], ["h", 2], ["i", 4], ["l", 1], ["m", 1], ["n", 2], ["r", 4], ["s", 3], ["t", 4], ["z", 1], ["\xFC", 1]]
Das ist kürzer als alles, was du gepostet hast.
-
Befehlsabkürzungen dürfen also verwendet werden, wie ich sehe ...
Prima: mit Befehlsabkürzungen wie deinem "p" schaffe ich es im Workspace von smalltalk mit 40 Zeichen plus Filename:
Fi<tab>fileN<down><down><tab>'foo.txt')co<tab><bkspace><bkspace>asBag sortedElements<ctrl-p>
Ausgabe:
{($A->7). ($B->5). ($C->8). [...] ($y->4)}
zum Längenvergleich jetzt mit den Abkürzungen T=<tab>, D=<down>, B=<bkspace> P=<ctrl-p> gegenübergestellt:
FiTfileNDDT'foo.txt')coTBBasBag sortedElementsP h={};IO.read("foo.txt").chars{|i|h[i]||=0;h[i]+=1};p h.sort
40:52, smalltalk führt mit 12 Zeichen Vorsprung
-
Fi<tab>fileN<down><down><tab>'foo.txt')co<tab><bkspace><bkspace>asBag sortedElements<ctrl-p>
Ist das jetzt dein Ernst?
Oder kann man das etwa als Datei speichern und mittels Smalltalk-Interpreter aufrufen? Dürfte bei der Rubyversion möglich sein.
Die ungeschriebene Regel war doch, nur die Standardbibliothek zu benutzen. p ist Teil davon. Also sei ein Mann und akzeptiere deine Niederlage - sonst machst du dich nur lächerlich.