Учитывая ввод испанского глагола в его инфинитивном виде, выведите глагол, спряженный во всех 6 формах показательного несовершенного.
Чтобы связать инфинитив в несовершенном, удалите окончание инфинитива (-ar, -er, -ir и иногда -ír) и добавьте несовершенные окончания, перечисленные ниже. В несовершенном есть три неправильных глагола, также перечисленных ниже.
Verb ending Replace with...
--------------------------------------------------------
-ar -aba, -abas, -aba, -ábamos, -abais, -aban
-er, -ir, -ír -ía, -ías, -ía, -íamos, -íais, -ían
Irreg. verb Conjugations
--------------------------------------------------------
ser era, eras, era, éramos, erais, eran
ver veía, veías, veía, veíamos, veíais, veían
ir iba, ibas, iba, íbamos, ibais, iban
Для целей этого задания используйте заглавные буквы вместо акцентированных букв (á становится A, é становится E, а í становится I). Это только потому, что в UTF-8 буквы с акцентом составляют 2 байта, но они могут отличаться в других кодировках, и я бы предпочел не иметь дело с этим и вместо этого оставаться в формате ASCII для печати.
Инфинитивные глаголы всегда будут состоять из трех или более символов, за исключением одного глагола ir , никогда не будут содержать букв с акцентом, за исключением глаголов, оканчивающихся на -ír, и всегда будут заканчиваться либо -ar, -er, -ir, или ... Отражательные глаголы не нужно обрабатывать.
Вывод может быть либо в виде строки, разделенной пробелами / запятыми (так что печать каждого сопряжения в STDOUT в отдельной строке, либо в порядке), либо в виде массива / списка / и т. Д.
Поскольку это код-гольф , выигрывает самый короткий код в байтах.
Тестовые случаи:
In Out
---------------------------------------------------------------
hablar hablaba hablabas hablaba hablAbamos hablabais hablaban
comer comIa comIas comIa comIamos comIais comIan
vivir vivIa vivIas vivIa vivIamos vivIais vivIan
sonreIr sonreIa sonreIas sonreIa sonreIamos sonreIais sonreIan
ser era eras era Eramos erais eran
ver veIa veIas veIa veIamos veIais veIan
ir iba ibas iba Ibamos ibais iban
источник
Ответы:
Сетчатка ,
100-82 байтаПопробуйте онлайн. К сожалению, из-за использования
$_
невозможно изменить код для одновременного выполнения всех тестов, поэтому вам придется копировать отдельные глаголы. Я работаю над новой функцией, которая сделает это возможным.объяснение
Мы начинаем с превращения всех концов, которые не
ar
вI
, при условии, что ввод не является неправильным глаголомir
. Это заботится о-er
,-ir
,-ír
конъюгации, портит неправильные глаголыser
иver
(но укорачивают их в процессе), и только листовir
и-ar
с завершающимr
.Если слово все еще заканчивается
r
, мы заменим это наb
. Теперь мы рассмотрели все стандартные спряжения, а также неправильный глаголir
.Это исправляет неправильный глагол,
ver
который был превращен наvI
первом этапе.Это исправляет неправильный глагол,
ser
который был превращен наsI
первом этапе. Теперь мы правильно изменили все возможные основы. Все, что осталось сделать, это добавить все возможные окончания, а затем исправить акцент для первого лица множественного числа в некоторых случаях.Сначала мы добавляем
a
к основанию, потому что это всегда часть всех окончаний.Это использует редко видимый,
$_
который вставляет всю строку в подстановку (независимо от того, что было найдено). Это на самом деле очень полезно при дублировании строк, которые есть$`
и$'
которые также недооцениваются.До этого этапа у нас есть первый человек в единственном числе в строке. Теперь мы добавляем другие спряжения, сопоставляя конец строки
$
и создавая другие формы, добавляя соответствующие суффиксы к единственному лицу первого лица.Наконец, мы фиксируем акцент для первого лица во множественном числе, если применимо. Это нужно сделать только для гласного, двух символов перед символом,
-amos
если символ между ними не являетсяI
. Таким образом, мы сопоставляем такой символ и затем используем этап транслитерации для преобразования нижнего регистра в верхний. Это делает использование новых классов персонажейl
иL
которые я только добавленные вчера. Они расширяются доa-z
иA-Z
соответственно, так что новая функция сохраняет здесь 4 байта.источник
Python 3,
154232 байтаИсправлены пропущенные заглавные буквы в неправильных глаголах.
Ungolfed
источник
Млечный Путь 1.6.2 , 281 байт
Ну, это заняло некоторое время! Похоже, мне нужно добавить несколько встроенных элементов, хе-хе ...
использование
Примеры
источник
Рубин,
151149Обычно я выбираю новую строку над точкой с запятой, где это возможно, в интересах удобочитаемости, но, поскольку точек с запятой нет, это одна строка.
Особенностью является использование заполнителей
31@
для ударных гласных, которые зависят отamos
окончаний. Таким образом, формируется правильный стебель, а затем замещающий элемент заменяется на один изeia
или,EIA
если необходимо,Здесь есть несколько примеров использования отрицательных индексов массивов. Таким образом,
n[-2]
относится ко второму-последнему символу ввода иn[0..-3]
относится к вводу с удаленными последними 2 символами (инфинитивный стержень).Неуправляемый в тестовой программе
источник