Cela va être un défi de golf de code relativement difficile.
Entrée: Toute URL doit avoir le protocole attaché, par exemple http://codegolf.stackexchange.com (qui sera notre cas de test)
Sortie: un code QR généré qui représente cette URL, qui, lorsqu'il est analysé par un appareil intelligent, vous amènera à cette URL sur le navigateur de l'appareil intelligent.
Règles pour ce Code-Golf
- Comme d'habitude, le plus petit code gagne.
- Aucune ressource Web externe, bibliothèque ou plug-in pour générer le code pour vous. Votre code doit calculer l'image du code QR.
- La sortie peut être présentée par une image, générée par HTML5 / CSS3, ou même en utilisant des blocs Unicode appropriés, ou si l'ASCII de votre plate-forme en dispose, via des caractères ASCII qui peuvent former le code QR (cette dernière est dirigée vers Commodore 64 Basic, Utilisateurs Amiga QBasic, Amstrad Basic, etc.), mais il doit générer une sortie de code QR pour que je puisse scanner le code.
- Les entrées du code doivent être suivies de la sortie générée, soit par une capture d'écran de la sortie après l'exécution de votre code, soit par un lien montrant la sortie (selon la situation qui convient le mieux)
- Vous devez tester votre code avec l'URL " http://codegolf.stackexchange.com " et signaler la sortie conformément aux règles 3 à 4.
- Vous devez également tester votre code avec l'URL de votre choix et signaler la sortie conformément aux règles 3 à 4.
Les références:
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/ pour l'inspiration ...;)
code-golf
graphical-output
browser
WallyWest
la source
la source
Réponses:
Python 3: 974 caractères [nb]
Battez encore plus avec le vilain bâton, voir le carnet sur GH-Gist . Python 3 a un encodage ASCII-85 intégré, qui aide avec le saus zippé. Les algorithmes de compression intégrés (LZMA) plus avancés de 3 ne semblent pas bien fonctionner avec de si petites choses.
La fermeture à glissière est très inconstante pour changer les caractères, elle était presque tentée d'écrire quelque chose qui essaierait au hasard différents noms à 1 lettre pour les variables afin de minimiser la taille zippée.
Python 2:
1420 1356 10851077 caractèresJ'ai lu le premier argument passé lors de l'appel, qui peut être une chaîne de 106 caractères maximum. La sortie est toujours un code QR de version 5-L et un masque 4, ce qui signifie qu'il fait 37x37 modules de grande taille et ne peut gérer que 5% de dégâts.
Les seules dépendances du programme sont
numpy
(manipulations de tableaux) etmatplotlib
(affichage uniquement); tout l'encodage Reed-Solomon, l'emballage des données et la disposition des modules sont traités dans le code fourni . Pour RS, j'ai essentiellement volé les fonctions de Wikiversité ... c'est toujours une sorte de boîte noire pour moi. J'ai beaucoup appris sur QR dans tous les cas.Voici le code avant de le battre avec le bâton laid:
Après:
(en s'appuyant sur un onglet pour compter comme 4/8 / quel que soit le nombre d'espaces> = 2., je ne sais pas dans quelle mesure il copiera)
Parce que c'est si long, nous pouvons le compresser (vu quelqu'un faire cela ailleurs, j'ai oublié qui cependant :() pour enregistrer quelques caractères supplémentaires, ce qui ramène le total à
10851077 parce quepylab
c'est sale:Si vous remplacez la dernière ligne par la suivante (elle ajoute 62 caractères), vous obtenez une sortie presque parfaite, mais l'autre scanne toujours, donc peu importe.
la source
struct
appel et un peu de poussée inutile en tronquant simplement ma 'chaîne principale' ...