Voici une image:
%%%%%%%%%%%%%
% Hello, %
% world! %
%%%%%%%%%%%%%
Mais c'est trop déroutant pour nos cerveaux trop petits pour être calculés. Donc, nous faisons la moyenne comme ceci:
Divisez-le en 2 x 2 sections. Si l'image se termine avant la fin d'une section, imaginez qu'il y a des espaces là-bas.
Moyenne des valeurs des caractères ASCII dans chaque section.
Arrondissez cette moyenne et convertissez-la en caractère ASCII.
- Enfin, remplacez tous les caractères de la section par le caractère moyen.
Répétez cette opération pour toutes les sections.
Ainsi, la moyenne de l'image ci-dessus ressemble à ceci:
$$>>II99######
$$>>II99######
$$##88KKGG####
$$##88KKGG####
Votre tâche: écrire un programme qui prend une image ASCII en entrée et génère sa moyenne.
Remarque Les nombres entiers sont arrondis par fonction floor(x+0.5)
ou fonction similaire - en d'autres termes, arrondissez les moitiés vers le haut.
Réponses:
JavaScript (ES6), 159 octets
Prend une chaîne multiligne en entrée.
la source
MATL ,
3230 octetsL'entrée est un tableau de caractères 2D, avec des lignes séparées par
;
.Essayez-le en ligne!
Explication
la source
Pyth, 58 octets
Essayez-le en ligne!
la source
Lua,
382376367353348 octetsFonctionne sur la ligne de commande; accepte une chaîne comme le cas de test.
la source
Rubis,
235230 octetsla source
Python, 319 octets
La deuxième indentation est des tabulations.
Ce qui précède
C
est le remplissage,C
est le processus de moyenne en lettres simples et le reste est généréla source
R,
433399 octetsJe deviens désespéré parce que cette chose semble ne pas être aussi compétitive que diable. Il imprime
pour le cas de test.
Si vous nourrissez dans le 7 × 3
la sortie sera
à cause de la divisibilité par 2 etc. etc.
Non golfé:
Regardez comment il gère cet exemple magnifique (gracieuseté de chris.com):
Après:
la source
Ruby,
180158148128 + 4124 + 4 = 128 octetsExécutez avec
$ ruby -nl
(+4 octets pour les-nl
drapeaux). Prend entrée sur STDIN.Voir sur ideone: http://ideone.com/brmP3L
Non golfé & explication
Per
man ruby
, le-n
drapeau "[c] utilise Ruby pour assumer la boucle suivante autour de votre script ...while gets ... end
". La variable spéciale$_
contient la dernière ligne lue pargets
. Le-l
drapeau supprime le\n
de chaque ligne, équivalent à$_.chop!
.La variable spéciale
$.
est le nombre de lignes qui ont été lues jusqu'à présent, et$<
est STDIN. Les paires de caractères de chaque deuxième ligne sont compressées avec les lignes précédentes. La chaîne de format%2s%2s
combine les caractères et les remplit avec des espaces, puis les caractères sont moyennés.la source
w=s=~/$/
est plus court pour calculer la largeur initiale. Il suffit également de renvoyer la chaîne calculée au lieu de l'impression, car cela compte comme sortie