Go to file
2019-10-15 23:15:04 +03:00
src Option parser 2019-10-15 23:15:04 +03:00
.gitignore Shape of the app 2019-10-15 19:53:38 +03:00
CHANGELOG.md Initial commit 2019-10-15 19:47:54 +03:00
config.yaml.sample Add sample config 2019-10-15 23:15:04 +03:00
default.nix Initial commit 2019-10-15 19:47:54 +03:00
koodihaaste.cabal Option parser 2019-10-15 23:15:04 +03:00
LICENSE Add license 2019-10-15 22:53:26 +03:00
nixpkgs.json Initial commit 2019-10-15 19:47:54 +03:00
README.md Add readme 2019-10-15 23:15:04 +03:00
release.nix Shape of the app 2019-10-15 19:53:38 +03:00
Setup.hs Initial commit 2019-10-15 19:47:54 +03:00
shell.nix Initial commit 2019-10-15 19:47:54 +03:00

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.

  1. Lue jokin suomalainen corpus
  2. Rakenna siitä n-gram malli
  3. 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ä.