IDLJ: sandwichfortæring i taxi

Publisert 30. april 2026

Du kjenner kanskje til “The quick brown fox jumps over the lazy dog”, en setning som brukes for å vise frem alle bokstavene i det engelske alfabetet.

I dag lærte jeg (fra README-en til skrifttypen Iosevka) at det finnes en norsk ekvivalent:

“Jeg begynte å fortære en sandwich mens jeg kjørte taxi på vei til quiz”.

Vi må nok inrømme at setningen føles ganske konstruert og unaturlig sammenliknet med den engelske, men det er ikke lett å bruke bokstavene x, y og z i samme setning. Ikke bare det, den har jo et tre bokstaver lengere alfabet og jobbe med også.

Her er et par Python-utrykk som kan hjelpe deg med å bekrefte det selv:

set("abcdefghijklmnopqrstuvwxyzåæø ") == \
  set("jeg begynte å fortære en sandwich mens jeg kjørte taxi på vei til quiz")
# > True

''.join(sorted(set(
    "jeg begynte å fortære en sandwich mens jeg kjørte taxi på vei til quiz"
)))
# > ' abcdefghijklmnopqrstuvwxyzåæø'

Jeg var også litt tvilende på om “sandwich” egentlig er et norsk ord, men i følge ordbokene.no er det visst det.

Kravet (1a) “alle bokstavene skal brukes minst én gang” er jo egentlig litt spennende, en strengere versjon ville vært (1b) “alle bokstavene skal brukes eksakt én gang”. Det er også et implisitt krav (2) om at det skal være en setning som gir mening syntaktisk og semantisk.

Det kunne vært litt gøy å lage et program som søker etter setninger som tilfredsstiller kravene.

Vi har et trivielt induksjonsbevis for at det finnes uendelig mange setninger som tilfredsstiller (1a) alene. Fordi du kan ta en vilkårlig setning som tilfredsstiller kravet, og legge på et tilfeldig ord til slutten, hvilket gir deg en ny setning som fortsatt tilfredsstiller (1a). Sandwichfortæringssetningen kan være basistilfelle.

Om krav (1b) kan tilfredsstilles er mer uklart for meg, men om det kan har det definitivt et begrenset antall løsninger, fordi setningen må være eksakt 29 bokstaver lang (alfabetets lengde), og vi har begrenset antall bokstaver å velge fra (29).

Gitt at det ikke finnes et ord tilfredsstiller (1b) alene, kan det ikke være tilfelle at det finnes eksakt én løsning til (1b), da en omordning av ordene i en gyldig løsning vil generere en annen gyldig løsning.

Neste steg vil være å kombinere genererte setninger fra (1a) eller (1b), med kravet (2), som er mye vanskeligere å automatisk validere. Praktisk må (1a)-genereringen være klar over (2) på en sofistikert måte, for den må kunne beskjære bort stier som aldri leder til setninger som tilfredsstiller (2) fra (det uendelige) søketreet ellers generert av naiv (1a).