# encoding: utf-8
=begin
Some notes:
There are only two strong verbs that really break the OVC -> OWC pattern:
"ziehen", "zog"
"hauen", "hieb"
[ei, eie, um] seem to be entirely within the set of strong verbs.
I know there are irregular strong CII's. Prolly may as well grab those later.
Obvs need to reformat the hash, and integrate the info from the ei, eie, and um arrays...
=end
ei = [
"bergen",
"bersten", #verbix
"brechen",
"dreschen",
"essen",
"erschrecken",
"fechten",
"flechten",
"fressen",
"geben",
"gelten",
"helfen",
"melken",
"messen",
"nehmen",
"quellen",
"schelten", #verbix
"schmelzen",
"schrecken", #verbix thinks it's totally regular. Others say it should indeed be in this array http://conjugator.reverso.net/conjugation-german-verb-schrecken.html
"schwellen",
"sprechen",
"stechen",
"sterben",
"treffen",
"treten",
"verderben",
"vergessen",
"werben",
# "werden", # A tiny bit odd. Prolly easier, instructionally, to just treat it as its own thing, not part of this pattern.
"werfen",
"erlöschen"
]
eie = [
"befehlen",
"empfehlen",
"geschehen",
"lesen",
"sehen",
"stehlen",
"gebären"
]
um = [
"backen",
"blasen",
"braten",
"empfangen",
"fahren",
"fallen",
"fangen",
"graben",
"halten",
"laden",
"lassen",
"laufen",
"raten",
"saufen",
"schlafen",
"schlagen",
"stoßen",
"tragen",
"wachsen",
"waschen"
]
ablauts = {
["ei", "i", "i"] => [
["befleißen", "befliss", "beflissen"],
["beißen", "biss", "gebissen"],
["bleichen", "blich", "geblichen"],
["gleichen", "glich", "geglichen"],
["gleiten", "glitt", "geglitten"],
["greifen", "griff", "gegriffen"],
["kneifen", "kniff", "gekniffen"],
["leiden", "litt", "gelitten"],
["pfeifen", "pfiff", "gepfiffen"],
["reiten", "ritt", "geritten"],
["reißen", "riss", "gerissen"],
["scheißen", "schiss", "geschissen"],
["schleichen", "schlich", "geschlichen"],
["schleifen", "schliff", "geschliffen"],
["schleißen", "schliss", "geschlissen"],
["schmeißen", "schmiss", "geschmissen"],
["schneiden", "schnitt", "geschnitten"],
["schreiten", "schritt", "geschritten"],
["spleißen", "spliss", "gesplissen"],
["streichen", "strich", "gestrichen"],
["streiten", "stritt", "gestritten"],
["weichen", "wich", "gewichen"]
],
["ei", "ie", "ie"] => [
["bleiben", "blieb", "geblieben"],
["gedeihen", "gedieh", "gediehen"],
["leihen", "lieh", "geliehen"],
["meiden", "mied", "gemieden"],
["preisen", "pries", "gepriesen"],
["reiben", "rieb", "gerieben"],
["scheiden", "schied", "geschieden"],
["scheinen", "schien", "geschienen"],
["schreiben", "schrieb", "geschrieben"],
["schreien", "schrie", "geschrien"],
["schweigen", "schwieg", "geschwiegen"],
["speien", "spie", "gespien"],
["steigen", "stieg", "gestiegen"],
["treiben", "trieb", "getrieben"],
["weisen", "wies", "gewiesen"],
["zeihen", "zieh", "geziehen"]
],
["i", "a", "u"] => [
["binden", "band", "gebunden"],
["dingen", "dang", "gedungen"],
["dringen", "drang", "gedrungen"],
["empfinden", "empfand", "empfunden"],
["finden", "fand", "gefunden"],
["gelingen", "gelang", "gelungen"],
["klingen", "klang", "geklungen"],
["misslingen", "misslang", "misslungen"],
["ringen", "rang", "gerungen"],
["schlingen", "schlang", "geschlungen"],
["schwinden", "schwand", "geschwunden"],
["schwingen", "schwang", "geschwungen"],
["singen", "sang", "gesungen"],
["sinken", "sank", "gesunken"],
["springen", "sprang", "gesprungen"],
["stinken", "stank", "gestunken"],
["trinken", "trank", "getrunken"],
["winden", "wand", "gewunden"],
["wringen", "wrang", "gewrungen"]
],
["ie", "o", "o"] => [
["fließen", "floss", "geflossen"],
["genießen", "genoss", "genossen"],
["gießen", "goss", "gegossen"],
["kriechen", "kroch", "gekrochen"],
["riechen", "roch", "gerochen"],
["schießen", "schoss", "geschossen"],
["schließen", "schloss", "geschlossen"],
["sieden", "sott", "gesotten"],
["sprießen", "spross", "gesprossen"],
["verdrießen", "verdross", "verdrossen"]
],
["ie", "o-", "o-"] => [
["biegen", "bog", "gebogen"],
["bieten", "bot", "geboten"],
["fliegen", "flog", "geflogen"],
["fliehen", "floh", "geflohen"],
["frieren", "fror", "gefroren"],
["schieben", "schob", "geschoben"],
["stieben", "stob", "gestoben"],
["verlieren", "verlor", "verloren"],
["wiegen", "wog", "gewogen"],
["ziehen", "zog", "gezogen"]
],
["e", "a", "o"] => [
["bergen", "barg", "geborgen"],
["bersten", "barst", "geborsten"],
["gelten", "galt", "gegolten"],
["helfen", "half", "geholfen"],
["schelten", "schalt", "gescholten"],
["sterben", "starb", "gestorben"],
["verderben", "verdarb", "verdorben"],
["werben", "warb", "geworben"],
["werfen", "warf", "geworfen"]
],
["e", "a-", "o"] => [
["brechen", "brach", "gebrochen"],
["schrecken", "schrak", "geschrocken"],
["erschrecken", "erschrak", "erschrocken"], # right?
["sprechen", "sprach", "gesprochen"],
["stechen", "stach", "gestochen"],
["treffen", "traf", "getroffen"]
],
["e", "o", "o"] => [
["dreschen", "drosch", "gedroschen"],
["fechten", "focht", "gefochten"],
["flechten", "flocht", "geflochten"],
["melken", "molk", "gemolken"],
["quellen", "quoll", "gequollen"],
["schmelzen", "schmolz", "geschmolzen"],
["schwellen", "schwoll", "geschwollen"]
],
["e-", "o-", "o-"] => [
["bewegen", "bewog", "bewogen"],
["heben", "hob", "gehoben"],
["pflegen", "pflog", "gepflogen"],
["scheren", "schor", "geschoren"],
["weben", "wob", "gewoben"]
],
["i", "a", "o"] => [
["beginnen", "begann", "begonnen"],
["gewinnen", "gewann", "gewonnen"],
["rinnen", "rann", "geronnen"],
["schwimmen", "schwamm", "geschwommen"],
["sinnen", "sann", "gesonnen"],
["spinnen", "spann", "gesponnen"]
],
["e-", "a-", "e-"] => [
["geben", "gab", "gegeben"],
["genesen", "genas", "genesen"],
["geschehen", "geschah", "geschehen"],
["lesen", "las", "gelesen"],
["sehen", "sah", "gesehen"],
["treten", "trat", "getreten"]
],
["e", "a-", "e"] => [
["essen", "aß", "gegessen"],
["fressen", "fraß", "gefressen"],
["messen", "maß", "gemessen"],
["vergessen", "vergaß", "vergessen"]
],
["a-", "u-", "a-"] => [
["fahren", "fuhr", "gefahren"],
["graben", "grub", "gegraben"],
["laden", "lud", "geladen"],
["schlagen", "schlug", "geschlagen"],
["tragen", "trug", "getragen"]
],
["a", "u-", "a"] => [
["backen", "buk", "gebacken"],
["schaffen", "schuf", "geschaffen"],
["wachsen", "wuchs", "gewachsen"],
["waschen", "wusch", "gewaschen"]
],
["a-", "ie", "a-"] => [
["blasen", "blies", "geblasen"],
["braten", "briet", "gebraten"],
["raten", "riet", "geraten"],
["schlafen", "schlief", "geschlafen"]
],
["o-", "ie", "o-"] => [ # right?
["stoßen", "stieß", "gestoßen"]
],
["a", "ie", "a"] => [
["fallen", "fiel", "gefallen"],
["halten", "hielt", "gehalten"],
["lassen", "ließ", "gelassen"]
],
["e-", "a-", "o-"] => [
["befehlen", "befahl", "befohlen"],
["empfehlen", "empfahl", "empfohlen"],
["stehlen", "stahl", "gestohlen"]
],
["e-", "a-", "o"] => [ # right?
["nehmen", "nahm", "genommen"]
],
["ü-", "o-", "o-"] => [
["küren", "kor", "gekoren"],
["lügen", "log", "gelogen"],
["trügen", "trog", "getrogen"]
],
["ä-", "o-", "o-"] => [
["gären", "gor", "gegoren"],
["wägen", "wog", "gewogen"]
],
["ä-", "a-", "o-"] => [ # right?
["gebären", "gebar", "geboren"]
],
["ö", "o", "o"] => [ # right?
["erlöschen", "erlosch", "erloschen"]
],
["i", "o", "o"] => [
["glimmen", "glomm", "geglommen"],
["klimmen", "klomm", "geklommen"]
],
["au", "ie", "au"] => [
["laufen", "lief", "gelaufen"],
["hauen", "hieb", "gehauen"]
],
["au", "o", "o"] => [ # right?
["saufen", "soff", "gesoffen"]
],
["a", "i", "a"] => [
["fangen", "fing", "gefangen"],
["empfangen", "empfing", "empfangen"]
],
["a-", "a-", "a-"] => [
["mahlen", "mahlte", "gemahlen"],
["spalten", "spaltete", "gespalten"],
["salzen", "salzte", "gesalzen"]
]
}
# length of longest word
# used by the function format( array )
below
$longest=11
# to find it again
longest = 0
ablauts.each do |k,v|
v.each do |triplet|
triplet.each do |word|
# longest = word.length if word.length > longest
# end
end
end
$longest = longest
puts $longest
def format array
for joining an array of strings into a single string, with right alignment of columns
(with spaces left and tabs right)
array.map{|s| ' '($longest - s.length)+s }.join "\t"2
end
order each list of verbs in a key pattern by rhyme
ablauts.each do |k, v|
v.sort! {|a,b| a[0].reverse <=> b[0].reverse}
end
add a forth item to each appropriate triplet
ablauts.each do |k, v|
v.each do |triplet|
if ei.include? triplet[0]
triplet << "I"
elsif eie.include? triplet[0]
triplet << "IE"
elsif um.include? triplet[0]
triplet << "UM"
end
end
end
# # selects non-( OVCen -> OWC ) patterns for preterite stem. Like, OWK.
# # doesn't deal with spelling stuff...
# # Too lazy to fix this up, cuz I found the answer anyway.
ablauts.each do |k, v|
p k
v.select! do |triplet|
# # # test bit \/
# inf_stem = triplet[0].sub( /(.*)en/,'\1' )
# inf_stem_with_pret_vowel = triplet[0].gsub( /(\w*?)[aiueoäüö]+([^aiueoäüö]*)en/,"\\1#{k[1].gsub '-', ''}\\2" )
# pret_stem = triplet[1]
# if inf_stem_with_pret_vowel != pret_stem
# [inf_stem_with_pret_vowel, pret_stem].each{|s| puts ' '*(11 - s.length) + s}
# end
# inf_stem_with_pret_vowel != pret_stem
end
end
# outputs the list of strong verbs, formatted. And with whatever other changes made to it above...
#File.open "strong_verbs_output.txt", "w" do |f|
File.open "strong_verbs_output.txt", "w" do |f|
ablauts.each do |k,v|
f.puts
f.puts format k
v.each {|triplet| f.puts format triplet }
end
end
# checking for verbs with an err/du present indicative change in the stem that are NOT in the list of strongs.
# Found five or six, but checked and they WERE strong.
# Added em with # right?
comments...
ablauts_infinitives = []
ablauts.each{|pattern, verbs| verbs.each{|triplet| ablauts_infinitives << triplet.first} }
File.open "non_strong_eieieums.txt", "w" do |f|
[ei, eie, um].each do |verblist|
# verblist.select!{|verb| !ablauts_infinitives.include? verb }
# f.puts
# f.puts verblist
end
end