Dies wird eine relativ herausfordernde Code-Golf-Herausforderung sein.
Eingabe: Für jede URL muss das Protokoll angehängt sein, z. B. http://codegolf.stackexchange.com (dies ist unser Testfall).
Ausgabe: Ein generierter QR-Code, der diese URL darstellt. Wenn Sie von einem Smart-Gerät gescannt werden, gelangen Sie zu dieser URL im Browser des Smart-Geräts.
Regeln für diesen Code-Golf
- Wie immer gewinnt der kleinste Code.
- Keine externen Webressourcen, Bibliotheken oder Plugins, um den Code für Sie zu generieren. Ihr Code muss das QR-Code-Bild berechnen.
- Die Ausgabe kann durch ein Bild erfolgen, das mit HTML5 / CSS3 oder sogar mit geeigneten Unicode-Blöcken erstellt wurde, oder, falls ASCII auf Ihrer Plattform verfügbar ist, durch ASCII-Zeichen, die den QR-Code bilden können (letzteres richtet sich an Commodore 64 Basic). Amiga QBasic, Amstrad Basic usw.), aber es muss eine QR-Code-Ausgabe generiert werden, damit ich den Code scannen kann.
- Eingaben des Codes müssen mit der generierten Ausgabe gefolgt werden, entweder mit einem Screenshot der Ausgabe nach Ausführung Ihres Codes oder mit einem Link, der die Ausgabe anzeigt (je nachdem, was der Situation am besten entspricht).
- Sie müssen Ihren Code mit der URL " http://codegolf.stackexchange.com " testen und die Ausgabe gemäß den Regeln 3 bis 4 melden.
- Sie müssen Ihren Code auch mit einer URL Ihrer Wahl testen und die Ausgabe gemäß den Regeln 3 bis 4 melden.
Verweise:
1) http://en.wikiversity.org/wiki/Reed%E2%80%93Solomon_codes_for_coders
2) http://www.pclviewer.com/rs2/calculator.html
3) http://en.wikipedia.org/wiki/Reed%E2%80%93Solomon_error_correction
4) http://en.wikipedia.org/wiki/QR_code
5) http://www.qrstuff.com/ zur Inspiration ...;)
code-golf
graphical-output
browser
WallyWest
quelle
quelle
Antworten:
Python 3: 974 Zeichen [nb]
Weiter mit dem hässlichen Stock schlagen, siehe Notizbuch auf GH-Gist . Python 3 verfügt über eine integrierte ASCII-85-Codierung, die bei der komprimierten Ausgabe hilft. Die fortschrittlicheren integrierten Kompressionsalgorithmen (LZMA) von 3 scheinen mit so kleinen Dingen nicht gut zu funktionieren.
Das Zippen ist sehr unbeständig, wenn es darum geht, Zeichen zu ändern. Es war fast versucht, etwas zu schreiben, bei dem zufällig verschiedene Namen mit einem Buchstaben für Variablen gesucht wurden, um die Größe des Zippers zu minimieren.
Python 2:
1420 1356 10851077 ZeichenIch habe das erste beim Aufruf übergebene Argument gelesen, das eine Zeichenfolge mit bis zu 106 Zeichen sein kann. Die Ausgabe ist immer ein Version 5-L QR-Code und Maske 4, was bedeutet, dass die Module 37x37 groß sind und nur ~ 5% Schaden aushalten können.
Die einzigen Abhängigkeiten des Programms sind
numpy
(Array-Manipulationen) undmatplotlib
(nur Anzeige); Alle Reed-Solomon-Codierungen, Datenpakete und Modullayouts werden im bereitgestellten Code behandelt . Für RS habe ich im Grunde genommen die Wikiversity-Funktionen beraubt ... für mich ist es immer noch eine Art Black-Box. Auf jeden Fall eine Menge über QR gelernt.Hier ist der Code, bevor ich ihn mit dem hässlichen Stock besiege:
Nach:
(unter Verwendung eines Tabulators als 4/8 / unabhängig von der Anzahl der Leerzeichen> = 2., nicht sicher, wie gut es kopiert)
Weil es so lange dauert, können wir es komprimieren (ich habe es woanders gemacht, habe aber vergessen, wen :(), um ein paar weitere Zeichen zu speichern, was die Gesamtsumme auf
1085 -1077 reduziert, weilpylab
es schmutzig ist:Wenn Sie die letzte Zeile durch die folgende ersetzen (es werden 62 Zeichen hinzugefügt), erhalten Sie eine nahezu perfekte Ausgabe, aber die andere scannt immer noch.
quelle
struct
Anruf verliere und ein unnötiges bisschen Druck ausübe, indem ich einfach meine 'Master-Saite' abschneide ...