Welche Programmiersprachen haben noch eine große Zukunft vor sich, welche gelten als veraltet?
-
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.
-
wennn in ruby der Methodenaufruf s.inspect abgekürzt durch "p s" eingegeben werden darf, dann muß ich in meinem workspace auch FileStream abgekürzt durch "Fi<tab>" eingeben dürfen - gleiches Recht für alle :xmas1:
-
Na, wenn du meinst.