“Fireplace For Your Home” – der Trailer zum neusten Geniestreich von Netflix
“Fireplace For Your Home” – der Trailer zum neusten Geniestreich von Netflix
“She Makes Comics” will eine Doku über comicschaffende Frauen sein
“She Makes Comics” will eine Doku über comicschaffende Frauen sein
Dinge, von denen ihr nicht wusstet, dass ihr sie wollt: Eine Judge-Dredd-Cosplay-Pinguin-Actionfigur
Dinge, von denen ihr nicht wusstet, dass ihr sie wollt: Eine Judge-Dredd-Cosplay-Pinguin-Actionfigur
Yeonmi Park erzählt von ihrem Leben und ihrer Flucht aus Nord Korea
Yeonmi Park erzählt von ihrem Leben und ihrer Flucht aus Nord Korea

apeguy 5 Million Monkeys and 5 Million Typewriters until the end of time in your Twitter

Gestern und eigentlich auch schon viel länger, aber gestern besonders, fragte ich mich, wieviele Tweets eigentlich möglich sind. Immerhin ist ja sowohl der Zeichensatz (utf-8, 65’535 Zeichen (ist das korrekt?)), als auch die Länge eines Tweets (140 Zeichen) endlich. Von daher sollte ja auch die Anzahl der verschiedenen Tweets endlich sein. Wenn man da jetzt etwas Potenzrechnung anwendet und noch ein bisschen gebräuchlich erklärt, dann hat man für jedes verfügbare Zeichen in einem Tweet 65’535 Möglichkeiten.

Die Anzahl der möglichen Tweets mit utf-8 beträgt also:

potenz1 5 Million Monkeys and 5 Million Typewriters until the end of time in your Twitter

Und heraus kommt eine Zahl jenseits von Gut und Böse. Ich nenne sie euch einfach mal. Aussprechen kann ich sie schon lange nicht mehr. Sie lautet:

20242424453907404169367286892793618480408918840337300756947602903752936224820
1162461147752791757536546587401621841477093013451643731498939741619630349219602
786070208980278064968941149480733198407108031259913488069360714108175704572393
4285122705839433541746126678877081432826751131289364798795186896635003271870122
274460686802224470610694133275842267377396437532372467895202002387342669398061
9590037378342447119251711283679083857168388280336756527148464241280848552138504
2400320280786426893138030888895674901382125184996584492284273018355916153460063
987432720754265797305701169613006885340696618090218051228202514306880628035219
122349587517195601549246930517256259918212890625

Das ist eine Zahl mit einer Länge von 675 Stellen. Das bedeutet, dass man fast fünf Tweets bräuchte, um bei Twitter überhaupt sagen zu können, wie viele verschiedene Tweets es rein rechnerisch gibt.

Das Ding ist jetzt aber, dass UTF-8 Zeichensätze von verschiedenen Kulturen beinhaltet und sich diese Zeichen in normalen Worten (ich meine nicht euch Smiley-Spammer und Komischschreiberweildiezeichensohübschaussehen!) eher selten mischen.

Daher habe ich mal geschaut, wieviele Tweets eigentlich so in unserem gebräuchlichen Alphabet möglich sind. Dazu habe ich einfach auf der Tastatur herumgeklimpert und mal geschaut, welche Zeichen mal eigentlich direkt erreichen kann. Das bedeutet, ich darf dazu nur die Umschalttaste, Strg und Alt Br benutzen. Logisch, oder? Insgesamt kam ich da auf 109 Zeichen, die wie folgt lauten:

^1234567890ß´+üpoiuztrewqasdfghjklöä#-.,mnbvcxy<°!”§$%&/()=?`*ÜPOIUZTREWQASDFGHJKLÖÄ’_:;MNBVCXY>²³{[]}\~€@µ|

(Nicht abgebildet: das Leerzeichen)

Die Rechnung lautet also:

potenz2 5 Million Monkeys and 5 Million Typewriters until the end of time in your Twitter

Und ergibt natürlich eine wesentlich kleinere Zahl, die da lautet:

173663964726100449819348761699066568750246202129181080415407396006710669226647
233119106859121815130409354014795295947010042809003955379686487950092034530976
072726676838479122533757251937021804309113777581492910419205551909021323106929
8826199373931908320810611101699125837496971408087601

Diese hat nur 286 Stellen und man brauch nur knappe zwei Tweet (und ein bisschen von einem dritten) um sie darzustellen. Irre!

Und warum das alles?

Also ich bin bei einem anderen Projekt gegen eine Wand gerannt und brauchte mal eine Denkpause, wollte mich aber trotzdem noch ein bisschen beschäftigen. Also schrieb ich ein Skript, das mir alle möglichen Tweets ausgibt und sie dann automatisch tweetet. Allerdings darf man bei Twitter nur 1000 Tweets am Tag schreiben, was dann ja offensichtlich ewig dauern würde, bis man da mal ein paar lustige Ergebnisse hat. Tatsächlich bräuchte es die lange Zahl von eben durch 365000 (1000 Tweets pro Tag pro Jahr) Jahre, bis mal bei der Beschränkung alle Tweets veröffentlicht hätte.

Das sind also

4,75791684 × 10279

Jahre. Ich hab das mal so notiert, weil sogar Wolfram Alpha damit ein Problem hat.

Also sind es quasi

 4757916841810971227927363334221001883568389099429618641518010849498922444565677619701557784159318641352164788912217726302542712437133690040765755946151533591033607584615866370787869916082789159153802125520353710115220600247159537176161167669517621666632357838634792125582183483309

Jahre, weil René damit kein Problem hat. Yeah.

Vermutlich gibt es so lange gar kein Internet und ich würde gerne mal einen Server sehen, der solange durchhält. Tatsächlich bräuchte man länger, um alle Tweets, die es gibt, zu veröffentlichen, als das Universum alt ist.

(Also ich hatte das schon programmiert, vielleicht veröffentliche ich mal eine Liste.)

Jedenfalls gibt es ja das Infinite-Monkeys-Theorem, das besagt, dass ein Affe nur unendlich lange auf einer Schreibmaschine herumzutippen braucht, bis er die Werke von William Shakespeare (auch die verschollenen) sauber abgetippt hat. Von der Logik her ist das schlüssig, praktisch natürlich schwierig.

Darum habe ich mir FÜNF MILLIONEN AFFEN UND FÜNF MILLIONEN SCHREIBMASCHINEN besorgt, sie mit Bananen versorgt (ich meine Koks), und lasse sie nun ordentlich tippen. Natürlich haben sie einen Twitteraccount, der da @5MillionMonkeys heisst und so zauberhafte Dinge wie

produziert. Allerdings habe ich das Alphabet ein bisschen verändert, um es logischer und lustiger zu machen. So kommen Leerzeichen und @s öfter, Zahlen und Umlaute gibt es nicht und die einzigen Sonderzeichen sind die runden Klammern, Doppelpunkt und Semikolon, dass man vielleicht mal einen Smiley sieht. Die @s sind vermehrt drin, dass man mal ein paar Leute nerven kann und die Tweets kommen alle 2 Minuten, um die Sperre zu umgehen.

Das sind die Dinge, die ich mache, wenn ich pausiere. Allerdings überlege ich gerade noch, ob ich nicht noch alle Capital-Letters rausnehmen sollte. Hm.

Jedenfalls kann ich jetzt Twitterspambots bauen. Wer braucht?

Es gibt 25 tolle Kommentare:


#1
29. September 2012

Auch wenn in der Rechnung („[…] 1000 Tweets am Tag […] die lange Zahl von eben durch 8766000 (1000 Tweets pro Stunde pro Tag pro Jahr) Jahre…“) irgendwo ein Fehler steckt (es sind nämlich 1000 Tweets pro Tag, nicht pro Stunde und damit nur 365000 und nicht 8760000 Tweets pro Jahr und wieviele Jahre brauchts denn? Steht auch nich da…)

Jedenfalls: AWESOME! Dit is sowas von gebloggt… 1000 Thumbs up pro Tag ;D


#2
29. September 2012

@René: Ah stimmt. Ist nur ein Verwirrungsfehler, weil das darüber nachdenken irgendwann schwer fiel *g*

Aber Dankeschön! :D


#3
madda
29. September 2012

Ganz stimmt die zahl nicht;)
Du hast nur die Tweets die genau 140 Zeichen lang sind.

sum(0<=i<=140, |utf-8|^i) wären alle ;P


#4
29. September 2012

@madda: Naja, doch… so halb: Er verwurstet ja auch das Leerzeichen, also auch Tweets a la “Deine Mudder[hier drölf Leerzeichen denken]”… passt scho ;)


#5
madda
29. September 2012

naja ein leerzeichen hat aber genau soviele bits wie jedes andere zeichen
also ist es nicht das gleiche

aber das ist haarspalterei

genug kluggeschissen für heute

edit: ich mein damit wenn du nichts hinschreibst wird auch nix übertragen im gegensatz dazu wenn du leerzeichen schreibst

so jetzt langts aber ;)


#6
29. September 2012

@madda: Nee, das stimmt schon so. Es kommt da ja auch nicht auf die Größe des Zeichens an, sondern was es am Ende wirklich ist. Tatsächlich beginne ich da auch mit einem 140-Elemente-großen Array und tausche dann, pseudozufällig, die Zeichen aus.


#7
29. September 2012

Habs grade mal ausgerechnet: Sind 4757916841810971227927363334221001883568389099429618641518010849498922444565677619701557784159318641352164788912217726302542712437133690040765755946151533591033607584615866370787869916082789159153802125520353710115220600247159537176161167669517621666632357838634792125582183483309 Jahre. ;D


#8
29. September 2012

Yeah Danke, geupdatet! :D


#9
madda
29. September 2012

also hast du ja nur alle zeichenketten mit länge 140 betrachtet

und das beispiel mit deiner mudder berechnet man genauso nach der formel

naja trotzdem mag ich so astronomisch große zahlen, wo es auch nichts mehr ausmacht ob die zahl doppelt oder 10-mal so groß ist


#10
29. September 2012

@madda: Ah, ja, stimmt. Also quasi. Allerdings kürzt Twitter Leerzeichen aus raus, also passt es wieder irgendwie *g*
Oder wir sagen einfach, dass die 5 Millionen Affen auf Enter drücken, wenn der Tweet voll ist :D


#12
madda
29. September 2012

dann ist es:

sum(0<=i<=140,sum(0<=j<=min((i/2)abgerundet,140-i),(|utf-8|-1)^i*binomial(i,j)))


#13
29. September 2012

@madda: Oder ich lass es so? :D
Aber weißt du, ob die Anzahl der Zeichen im utf-8 so stimmt? Ich hab da nur eher schwammige Aussagen zu gefunden und nachzählen wollte ich da auch nicht *g*


#14
29. September 2012

Wundervoll zu sehen, daß du was sinnvolles mit deiner freien Zeit anstellst. Ich bin ein bißchen traurig, daß du keinen Mac benutzt, sonst wären in deiner Liste der Zeichen auch so wunderschöne wie «∑€®†Ω¨⁄øπ• (qwertzuiopü mit gedrückter alt-Taste) dabei. & noch mehr.
Laß die Versalien bitte drin, die machen das Schriftbild so dynamisch :D


#15
29. September 2012

http://stackoverflow.com/questions/5924105/how-many-characters-can-be-mapped-with-unicode
1 sek google….
auch: beweg deinen Arsch hier her!


#16
29. September 2012

@Da Na: Ich hatte leider gerade keinen Mac zur Hand… Sorry :(
Und Affen sind im Allgemeinen sehr faule Tipper. :D

@Bernd: ich hab das nicht gefunden :\
Und was willst du denn mit meinem Arsch, he? HE? :D


#19
29. September 2012

Hältst du in einer Datenbank denn fest, welche Kombinationen schon durch sind? Oder würfelst du einfach nur jedes Mal nur ohne Gegencheck, so dass es auch zu Wiederholungen kommen kann? Dann dürfte es noch ein paar Jahre länger dauern…


#20
29. September 2012

also wenn ich dass richtig sehe gehst du von 2 falschen Annahmen aus:
a) die länge der botschaften: die sind keineswegs fest und die länge liegt irgendwo zwischen 1 und 140
b) länge des Zeichensatzes (aber das hatten wir ja schon)

auch: dein Script(ich möchte es nicht Programm nennen weil Zufallszahlengenerator an die Twitterapi zu hängen kann man nicht Programm nennen) verbraucht im Durchschnitt 1,174 [und blah byte pro Zeichen (128/109)].
Da ich nicht genau weiß wie deine Verteilung genau aussieht, gehe ich von einer gleichmäßigen Verteilung aus, also 164,4 byte je Nachricht [140*(128/109)], plus der ganze Overhead an Datenbankeinträgen für Fremdschlüssel und der gleichen.
Gehen wir davon aus, dass nur ein Index auf deinen Namen, ein Long [8 byte], und der Zeitstempel, ein Int[4 byte], gespeichert wird.
Also haben wir 164,4+8+4byte je Nachricht.
Weiter im Gedankenexperiment: die Zahl dann noch mit deinem Vorhaben multiplizieren und man bekommt 64431441 Byte Datenmüll jährlich raus, Super! (sicher liegt die Zahl im mindestens eine Größenordnung höher)
ohh und 3. Fehler: und Google hätte wieder dabei geholfen: https://www.google.com/search?&q=wieviele+tage+hat+ein+Jahr

Sorry bin gerade in Kaputtmachlaune.


#21
29. September 2012

Hallo, wenn ich mal kurz einhaken dürfte: die 109-stellige zeichenkette ist so auch nicht ganz richtig ausgewählt. Grundsätzlich verwendest du als gebräuchlichste Zeichen (in Mitteleuropa) den kompletten ASCII-Satz, das sind 256-Zeichen, wovon du die ersten 32, die Steuerzeichen sind, weglassen kannst und dann noch die 6 undefinierten Symbole rausnimmst. Bleiben demnach noch 218 Zeichen, die im europäischen Sprachraum verwendet werden. Die Rechnerei überlass ich jetzt dir mal.

Und sonst, ja, schönes Gedankenspiel :)


#22
29. September 2012

@honki: Naja wenn dann doch eher latin-1 und das sind 1-2 byte je zeichen


#23
madda
30. September 2012

meines wissens nach ist das unicode alphabet noch lange nicht ausgeschöpft, also es sind noch ein haufen freie stellen da.
Ich weiss aber nicht ob es da drin dann mehrere zeichen für das leerzeichen gibt.

und in meiner formel ist noch ein kleiner fehler drin.
du musst in der inneren summation bis min(i-1,140-i) aufsummieren
und hinten der binomialkoeffizient ist i-1 über j


#24
30. September 2012

@Bernd: Latin-1 entspricht dem ASCII-Zeichensatz. Sagen wir einfach Latin-9, da sind auch die französischen Zeichen integriert.

(Aber mal ganz ehrlich, das is’ schönste Korinthenkackerei auf höchstem Niveau und letzten Endes sitzt Marco in seinem Stuhl, zuckt mit den Schultern und macht sich ‘ne Jackie Coke ;D)


#25
Hanna
1. October 2012

@Marco:
schau mal: imagine-babel.com! Vg!


#27
Thebearbruno
2. October 2012

mal kurz was trolliges zwischen durch, sind René und Marco bloß Brüder im Geiste oder aber auch im Blute?


#28
2. October 2012

Also ich find’s super! Fürs Folgen ist die Frequenz einfach so hoch, aber immer mal rein schauen werde ich auf jeden Fall. Vielleicht gibt es ja mal was zum Antworten. :) Bin gespannt.


#30
27. October 2012

Der Acc ist gesperrt, seit wann das denn? :D

Trackbacks

Hinterlasse doch einen Kommentar




<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>