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?
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
Grez kirjoitti:
- - "Tkokin kaihoisa tango" - -
Kiitos vinkistä!
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.
Aihe on jo aika vanha, joten et voi enää vastata siihen.