È inverno, ed è giunto il momento dell'anno per iniziare a fare freddo (e per apparire strani stracci colorati per la testa ... presto). Scriviamo del codice per rendere le immagini degli avatar e altre immagini congelate, per adattarle al tema!
Ingresso
L'input per l'invio di questa sfida dovrebbe essere un'immagine (l'immagine da congelare) e un numero (la soglia, che verrà spiegata in seguito).
Puoi inserire l'immagine in qualsiasi modo la tua lingua li supporti (un percorso di file o URL come argomento, prenderlo dagli appunti, trascinare e rilasciare un'immagine, ecc.) E in qualsiasi formato elencato qui che esprima i colori in RGB (tu puoi supportare / richiedere RGBA invece se vuoi, ma questo non è un requisito).
Puoi inserire il numero nel modo che preferisci (argomento della riga di comando, STDIN, finestra di dialogo di input, ecc.), Ad eccezione di codificarlo nel tuo programma (es. n=10
). Se si utilizza un percorso / URL del file per l'immagine, anche questo deve essere inserito in questo modo.
Produzione
Il programma deve elaborare l'immagine secondo la descrizione che segue e quindi emetterla nel modo desiderato (su un file, mostrandolo sullo schermo, mettendolo negli appunti, ecc.).
Descrizione
Gli invii devono elaborare l'immagine con i seguenti tre passaggi. n
si riferisce al numero ricevuto dal programma come input insieme all'immagine.
Applica una sfocatura del raggio
n
all'immagine di input sostituendo i valori R, G e B di ciascun pixel con i valori R, G e B medi di tutti i pixel entro una distanza di Manhattan din
pixel, ignorando tutte le coordinate fuori dai limiti. (Vale a dire tutti i pixel in cui la somma della differenza in X e la differenza in Y è minore o uguale an
.)(nota: ho usato una sfocatura gaussiana per le immagini sopra perché c'era una comoda funzione incorporata, quindi le tue immagini potrebbero apparire un po 'diverse.)
Impostare ciascun pixel su un pixel casuale entro una distanza di
n/2
pixel (la "distanza" è definita nello stesso modo del passaggio precedente).Questo dovrebbe essere fatto facendo un ciclo attraverso l'immagine e impostando ciascun pixel su un pixel casuale in questo intervallo, quindi alcuni pixel potrebbero scomparire del tutto e alcuni potrebbero essere duplicati.
Tutte le modifiche devono essere applicate contemporaneamente. In altre parole, utilizzare i vecchi valori dei pixel (dopo il passaggio 1 ma prima di questo passaggio), non i nuovi valori dopo averli impostati su un pixel casuale.
Moltiplica il valore RGB "blu" di ciascun pixel per 1,5, limitandolo a 255 (o qualunque sia il valore massimo per una banda di pixel) e arrotondando per difetto.
Regole
È possibile utilizzare librerie di immagini / funzioni relative all'elaborazione delle immagini integrate nella propria lingua; tuttavia, non è possibile utilizzare alcuna funzione che esegua una delle tre attività principali menzionate nella descrizione. Ad esempio, non è possibile utilizzare una
blur
funzione, ma unagetPixel
funzione va bene.Questo è code-golf , quindi vince il codice più corto in byte!
dx <= n && dy <= n
è una rappresentazione accurata della distanza di Manhattan, no?