Golf Programming: Anagrammi
Rientriamo dopo le ferie con un’altra sfida classica, giusto per toglierci di dosso eventuale ruggine. Al solito riporto le regole per chi cominciasse adesso a seguire questa pseudo rubrica.
Le Regole
Ormai le regole dovrebbero essere familiari, le riporto per scrupolo:
- Scrivere un programma, il più breve possibile, che risolva il problema enunciato prima e riportato meglio qui sotto;
- per ogni linguaggio utilizzato è considerato vincitore il programma scritto usando meno caratteri;
- l’efficienza dell’algoritmo non è un fattore fondamentale ma il programma deve terminare senza errori;
- si può optare, se più concisa, per una funzione, piuttosto che un programma intero;
- ovviamente non di vince niente se non la soddisfazione di aver accettato una sfida ed averla vinta.
L’algoritmo
La funzione di questo mese prende in input due stringhe e stampa vero se una delle due è anagramma dell’altra o falso in caso contrario (ovviamente sono consentite anche, per i linguaggi che lo permettono, 0 ed 1 o 0 e ~0).
Al solito posterò la mia soluzione come commento alla fine della settimana entrante, per dare il tempo a chi vuole partecipare di scatenare la propria fantasia.

ecco, in python
import sys
a, b = sys.argv[1:]
if sorted(list(a)) == sorted(list(b)):
print ‘le due stringhe sono anagrammi’
su dpaste -> http://dpaste.com/87444/
funziona via terminale passandogli 2 argomenti, stringa 1 e stringa 2:
python anagrammi.py patrick prova
patrick
Agosto 30, 2009 alle 21:02 pm
Prendendo spunto dalla versione di patrick ecco la mia versione in Ruby
p ARGV[0].scan(/./).sort == ARGV[1].scan(/./).sort ? 1 : 0
Davide
Agosto 31, 2009 alle 7:57 am
E’ stata durissima !
Un carattere in meno di Davide e con in + la gestione di errori in fase di input (assenza di uno o di entrambi dei due termini):
p eval”(#{a=’ARGV.shift.split(//).sort’}==#{a})rescue :E”
^_^
Sandro
Settembre 13, 2009 alle 21:16 pm
In PHP
strspn($argv[1],$argv[2])==strlen($argv[1])?1:0
Damiano
Settembre 29, 2009 alle 16:49 pm
@Damiano, sei sicuro che non manchi qualcosa? Tipo un echo.
Ho controllato lo script con patate e patte come parametri e l’output è errato.
eineki
Ottobre 1, 2009 alle 22:03 pm
Sicuramente mancava la mia soluzione, scusate il ritardo ma non avevo la testa abbastanza sul collo per ricordarmi che avrei dovuto postarla quasi tre settimane fa.
function s($x){
$a=str_split($x);
sort($a);
return(join($a));
}
echo s($argv[1])==s($argv[2])?1:0;
eineki
Ottobre 1, 2009 alle 22:04 pm