Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Python teksti numeroiksi

tkok [05.01.2011 12:07:33]

#

Moi

Olen tässä tehnyt tuota säveltävää tekoälyä ja en keksi miten muuttaisin tekstin eli biisin nimen joksikin isoksi numeroksi. Numeron tulisi olla sellainen että eri tekstit antaisivat suhteellisen erilaiset luvut.

Ideoita?

Grez [05.01.2011 12:09:11]

#

No kerrot vaikka merkin ascii (tai Unicode) numeron merkin järjestysnumerolla ja lasket ne yhteen. Sitten siitä jakojäännös lukujen ylärajalla. Toki jos tarvii isoja lukuja, niin laskemisen voi aloittaa vaikka 12345 ja kasvattaa 233:lla

Eli jos yläraja olisi vaikka 5000000 ja nimi "Tkokin kaihoisa tango" niin voisi tulla:

Mrk	Arvo	Kerroin	Tulo
T	84	12345	1036980
k	107	12578	1345846
o	111	12811	1422021
k	107	13044	1395708
i	105	13277	1394085
n	110	13510	1486100
   	32	13743	439776
k	107	13976	1495432
a	97	14209	1378273
i	105	14442	1516410
h	104	14675	1526200
o	111	14908	1654788
i	105	15141	1589805
s	115	15374	1768010
a	97	15607	1513879
   	32	15840	506880
t	116	16073	1864468
a	97	16306	1581682
n	110	16539	1819290
g	103	16772	1727516
o	111	17005	1887555

Yhteensä: 30350704
Jakojäännös 5000000:lla = 350704

tkok [05.01.2011 12:48:41]

#

Grez kirjoitti:

- - "Tkokin kaihoisa tango" - -

Kiitos vinkistä!

Metabolix [05.01.2011 15:43:14]

#

Itse käytän seuraavaa funktiota:

def luvuksi(nimi):
	luku = 0
	merkit = "-0123456789abcdefghijklmnopqrstuvwxyz"
	for i in nimi:
		luku *= len(merkit)
		try:
			luku += merkit.index(i)
		except:
			pass
	return luku

Tämä tuottaa jokaisesta kilpailussa sallitusta nimestä eri luvun eikä kaadu myöskään laittomiin nimiin. Teknisesti voisi sanoa, että koodi tulkitsee nimen 37-järjestelmässä olevana lukuarvona, jonka numeromerkit ovat nuo luetellut.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta