> magicFunction 'l' '_' "hello world"
["he_lo world", "hel_o world", "hello wor_d"]
Esiste una tale funzione magica nel Preludio standard o può essere composta facilmente con altre funzioni?Calcolo di tutte le possibilità di sostituire un carattere con un altro
E no, questo non è compito a casa, ma ancora, per favore non passare troppo tempo a girare la tua soluzione complicata, preferirei farlo io stesso che sprecare il tuo tempo;) Solo chiedendo se è in lo standard.
EDIT: Ecco il mio primo tentativo:
import Data.List (findIndices)
replace i y xs = take i xs ++ y : drop (i+1) xs
magicFunction x y xs = map (\i -> replace i y xs) (findIndices (== x) xs)
può essere migliorato? Sicuramente qualcosa come replace
deve essere nello standard? Ho trovato replace :: Eq a => a -> a -> [a] -> [a]
in Network.CGI.Protocol
, ma ha la firma sbagliata.
Stai cercando di fare un bypass filtro di blasfemo? XD – Mysticial
Cosa c'è di sbagliato nella firma di 'replace'? Imposta 'a ~ Char' quindi' [a] ~ String', e abbiamo 'Eq Char', quindi qual è il problema? – dave4420
@ dave4420 Il primo problema è che si trova in 'Network.CGI.Protocol' ... Abbastanza casuale come importazione per questo tipo di funzionalità (che si può trovare in posizioni più appropriate) – Jedai