Tupper-Formel

    • VB.NET
    • .NET (FX) 4.0

    Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von Higlav.

      Tupper-Formel

      Hallo liebe Community,

      Ich habe gestern wiedermal ein Video von Numberphile gesehen, in dem es um die "Alles-Funktion"("Everything formula") ging. In diesem Video ist das Prinzip mit ein paar Beispielen beschrieben.
      Die Formel wurde von Jeff Tupper entwickelt und hat die Eigenschaft, dass sie auf einem Bereich von 106x17 Punkten alle Kombinationen plottet, bis man zum höchsten y-Offset(von 2^(17*106)) erreicht(danach gibt's nurnoch Wiederholungen). Das heisst, sie plottet an bestimmten Abschnitten auch mal einen verpixelten Ferrari, ein Profilphoto oder auch alle PIN-Nummern etc. Um diese Möglichkeiten offen zu halten, ist ein riesiger Bereich an möglichen Y-Offsets vonnöten. Diese Offsets werden als k-Werte bezeichnet und sind zu 0 modulo 17 kongruent(=von 0 an, 17-er Schritte).
      Die Formel lautet originalgetreu wie folgt:

      LaTeX

      TeX-Quellcode

      1. \frac12<\left\lfloor\mod{\left(\left\lfloor\frac y{17}\right\rfloor2^{-17\left\lfloor x\right\rfloor-\mod{\left(\left\lfloor y\right\rfloor,17\right)}},2\right)}\right\rfloor


      Es gibt auf GitHub ein Java-Projekt, dass die k-Werte anhand dieser Formel in einen Plot umwandeln.

      Ich habe jetzt mal ein Projekt hierfür hingeklatscht, das einem die Plots ausspuckt und einem die Möglichkeit gibt, diese zu manipulieren oder eigene Plots zu kreieren, die dann ausgewertet werden, um den dazugehörigen k-Wert auszugeben.
      Das Ganze ist nicht wirklich schön, aber zweckmässig - da bin ich für Verbesserungen offen.



      PS: Angefangen hat das alles hier.

      Beispiele:
      960939379918958884971672962127852754715004339660129306651505519271702802395266424689642842174350718121267153782770623355993237280874144307891325963941337723487857735749823926629715517173716995165232890538221612403238855866184013235585136048828693337902491454229288667081096184496091705183454067827731551705405381627380967602565625016981482083418783163849115590225610003652351370343874461848378737238198224849863465033159410054974700593138339226497249461751545728366702369745461014655997933798537483143786841806593422227898388722980000748404719


      1933244020333122454358431597346594592792291090460249189485029419146143192350358886433653094867508540987343993583748430465319952016537013595446280959638092985475464233904118460002858442145459682760016054209121238355756672711937198495688828568922423839783795719264320868666058469167754341234295329166733357364107621934828578169221569813421952407176439531256012185396833397320160950554890430018618112062094235193746733413123059516750653337786455606305907511273488939529709098459003518447939630151854430596750132433369842119659992645632


      54999822769533866926476640191616307072962105932292350665968916721844160


      110106825805586208305826326284280259103370696791976852418082302139134273256593392673617313260365120783360033990522615748171691888047530594733427583999818675695350238566147370268137425942807857350456360924215100148693384475848591373725803794972539401803154791934614120166361172022921275766434217450101768303037861067744914440192


      Screenshot:


      Genutzte IDE/Genutztes Framework:
      -Microsoft Visual Studio 2012 Ultimate
      -Framework 4.0

      Download:
      Everything Formula.zip (24,53 kB)

      Mit freundlichen Grüssen,

      Higlav

      Spoiler anzeigen
      Ausführbare Dateien entfernt. ~Thunderbolt

      Dieser Beitrag wurde bereits 7 mal editiert, zuletzt von „Higlav“ ()

      Witzig, ich wollte mich da eigentlich auch dran machen :D

      Es tut was es soll, ich denke aber nicht, dass es notwendig ist, weitere Zeit dort hinein zu investieren, selbst wenn man noch das ein oder andere ausbessern könnte.
      »There's no need to "teach" atheism. It's the natural result of education without indoctrination.« — Ricky Gervais
      Danke an euch. :thumbup:

      faxe1008 schrieb:

      @Higlav Nette Idee allerdings kann ich das Projekt nicht öffnen ohne das es Fehler ausspuckt. Kannst du ein lauffähiges Projekt anhängen :D ?

      Tritt der Fehler immernoch auf? Wenn es bei mir und anderen klappt, könnte es evtl. an der Version des von dir verwendeten VS liegen?

      ThePlexian schrieb:

      Es tut was es soll, ich denke aber nicht, dass es notwendig ist, weitere Zeit dort hinein zu investieren, selbst wenn man noch das ein oder andere ausbessern könnte.

      Ach was, da geht noch bestimmt was. :D Aber klar, in dieses Projekt all zu viel Zeit zu investieren lohnt sich nicht. Trotzdem wäre eine besser implementierte Möglichkeit, ein eigenes Bild zu zeichnen wohl gar nicht mal so schlecht. Vielleicht mache ich da noch was...
      Hier ist wohl der höchstmögliche Wert für dein Programm

      ​636811700236144367174598932242848388106904820579992034022410886217416093668206935972133833619797830868186762786007121230912832857547806557881501313319788843611141527860064414384439685274526329837152288571144336799954522856700903140565753864977113194338008807504166437418985787223623872268632495030328725715322589760300013510879662425966854531177634071213937191242069802598255847685493431621611356072853175128826274726928102496951153735517856304317472687459166506708840350115400722540478829055552908623220282581258357224417435425103774756233749200879
      Jä, nicht ganz. ;) Ich habe mich auch relativ schnell gefragt, "was passiert wenn...". Wenn man 17 hinzuaddiert, erhält man das gleiche Bild wie beim Wert 0. Bei weiteren +17 erhält man das gleiche Bild wie bei 17 und so weiter. Solange der Wert k kongruent zum Modulo 17 ist, erhält man auch das zugehörige Bild. Es gibt also so eine Art Überschlag. Damit ist jeder Plot der Zahl k unendlich mal an der Y-Achse zu finden, nämlich immer um k+g*k_max, wobei kmax der von dir geposteten Zahl entspricht. :thumbup:
      PS: g ist in meinem Programm dann nur ein Element der natürlichen Zahlen.

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Higlav“ ()

      @EaranMaleasi Au Ja! QR-Codes als eingene Zahl darstellen. :D

      @nafets Du kannst die Formel manipulieren: Ändere alle 17er zu der gewünschten Höhe. Bei der Breite ist's glaub's etwas trickier, aber es sollte funtionieren. Aber das Projekt ist nicht darauf ausgelegt und irgendwann macht natürlich auch der BigInteger nicht mehr mit. Musst halt etwas herumspielen, dann klappt's schon(war zumindest bei mir mal so).
      Bei mir kompiliert folgende Zeile nicht:

      VB.NET-Quellcode

      1. Private Sub BtnPlot_Click(sender As Object, e As EventArgs) Handles BtnPlot.Click
      2. If Not TBInput.TextLength = 0 AndAlso _CanParse Then
      3. Dim KValue = BigInteger.Parse(TBInput.Text)
      4. For kOffset = 0 To YRANGE
      5. For x = 0 To XRANGE
      6. _PlotBuffer(x, kOffset) = (Calculate(x, KValue + kOffset) > 0.5) ' <-- Die hier
      7. Next
      8. Next
      9. PBPlot.Refresh()
      10. End If
      11. End Sub


      KaskadekingDE on GitHub :)
      Bitte keine Fragen über Programmierung per PN! Dafür ist das Forum hier.

      Who cares? ¯\_(ツ)_/¯
      Stimmt. Zumindest teilweise. Bei mir zeigt's zwar den Fehler an, kompiliert aber ohne Probleme. Lösche einfach die Nachkommastelle .5], dann schluckt er's als Long.
      Ist das evtl. so ein ReSharper <-> VS Ding? ?(