src | ||
.gitignore | ||
CHANGELOG.md | ||
config.yaml.sample | ||
default.nix | ||
koodihaaste.cabal | ||
LICENSE | ||
nixpkgs.json | ||
README.md | ||
release.nix | ||
Setup.hs | ||
shell.nix |
Solidabis koodihaaste
Haasteen tehtävänä on hakea lista rot-n enkoodattuja lauseita, tunnistaa oikea
n
dekoodatessa ja palauttaa dekoodattu sana.
Dekoodaus
Moduuli Data.Caesar
toteuttaa dekoodauksen primitiivit. Kirjainta
siirretään vasemmalle n merkin verran, ottaen huomioon 'a', 'z', 'å' ja 'ä'
rajat.
Lauseen tunnistaminen
Moduulit Data.Language
ja Data.NGram
toteuttavat primitiivit tulosten tunnistamiseen.
Käytän n-grameja suomalaisten lauseiden tunnistamiseen, tai tarkemmin sanottuna, suomalaiselta vaikuttavien lauseiden tunnistamiseen.
- Lue jokin suomalainen corpus
- Rakenna siitä n-gram malli
- Jokaista lausetta varten, vertaa lauseen n-grameja mallia vasten
Yritä-erehdy menetelmällä löysin rajaksi ~-8. Sitä suuremmat ovat todennäköisesti suomalaisia lauseita, tai ainakin sitä muistuttavaa.
Corpuksena käytin Sydäntalven tarinaa josta siistin englanninkielisen alun ja lopun. Kirja ei ole repositoryssa mukana.
Suoritus
nix-build release.nix -A koodihaaste
result/bin/koodihaaste config.yaml
curl http://localhost:8080
Aukeaa myös selaimella.
Saatan myös pistää paketin pyörimään https://koodihaaste.introitu.info mutta ei ole siellä vielä kirjoitushetkellä.