J'ai récemment énuméré la chanson I'm a Textpert sur les textos en conduisant et une ligne particulière de la chanson a inspiré ce défi.
Je ne me baisse jamais aussi bas que pour envoyer des photos par texte
Maintenant, évidemment, ce serait une chose presque impossible à faire dans sa tête et vous devriez donc aider les experts du monde entier en codant un programme pour faire la même chose.
Votre travail consiste à prendre le nom d'un fichier image avec les dimensions 500x500
pixels et à sortir le fichier en binaire. Vous pouvez également prendre une image en entrée, si votre langue la prend en charge.
Vous pouvez utiliser des fichiers image avec les extensions
.jpg
.png
.gif
.bmp
.svg
Permettez-moi de montrer comment convertir une image en binaire, pour ceux qui ne comprennent pas ce que je veux dire.
Étape 1
Prenez le premier pixel du fichier et récupérez sa valeur RVB sous forme de 3 nombres décimaux: R, G et B. Supposons, par exemple, que le premier pixel soit 255,0,0
(rouge).
Étape 2
Convertissez chaque nombre en sa représentation binaire 8 bits et concaténez en un seul nombre 24 bits. Pour l'exemple, cela donne111111110000000000000000
Étape 3
Ajoutez ce nombre de 24 bits à la sortie finale. Par conséquent, la sortie finale doit être 6000000
longue de chiffres et doit être entièrement 1
et0
C'est un code-golf donc le code le plus court gagne!
la source
Réponses:
Pyth ,
1413 octets-1 octet grâce à Erik l'Outgolfer (
z
peut être supprimé pour une entrée implicite).Explications
Malheureusement, pour des raisons de sécurité, cela ne peut pas être testé avec l' interprète en ligne ; vous devrez cloner Pyth pour le tester sur votre propre ordinateur.
la source
z
.MATL ,
1312 octetsAccepte un nom de fichier sous forme de chaîne en entrée. Les nombres de 24 bits en sortie sont affichés dans l'ordre des lignes principales.
Malheureusement, cela ne fonctionne pas dans les interprètes en ligne pour des raisons de sécurité. Voici une capture d'écran du fonctionnement sur ma machine locale
Voici une version légèrement modifiée dans laquelle je crée manuellement une image 2 x 2 x 3 puis utilise (presque) le même code pour la traiter.
Explication
la source
Mathematica, 103 octets
prend une image x.bmp (ou toute autre) et la convertit en fichier x.txt
la source
PadLeft
, vous pouvez utiliser le troisième argument deIntegerDigits
(ieIntegerDigits[#,2,8]&
Import
«Exporter».C #, 309 octets
Mon deuxième code de golf, si vous ne pouvez pas le dire. Prend une image x.jpg ...
la source
Octave, 46 octets
Crée une fonction anonyme nommée
ans
qui peut être appelée avec un nom de fichier (ans('file.png')
) ou une URL (ans('http://image.png')
)la source