Вы должны написать очень маленькую программу в пределах 100 символов. Ваша программа должна различать мужские и женские французские существительные. Вывод должен быть, un
если он мужской и une
женский. Зачастую существуют определенные статистические правила, которым вы можете следовать (например, если оно оканчивается на «е», оно скорее женское, чем мужское).
Вход :
Французское слово; он может состоять из любых строчных букв и тире, в том числе строчных букв с акцентами.
Пример ввода: ami
Выход :
un
если слово мужское и une
если слово женское.
Пример вывода: un
Вам не нужно правильно понимать каждое слово; Ваша цель - быть максимально точным.
Оценка : Ваш ответ должен быть в пределах 100 символов. Такие заявления, как print
и console.log
или alert
же не считаются частью ваших общих байт. Вы также можете написать функцию или метод, который выполняет эту задачу, и в этом случае первые несколько байтов (например f=x=>
), которые являются частью объявления функции, не учитываются в вашем общем объеме. Ваш общий балл - это количество неправильных ответов. Галстуки разбиты по размеру кода.
Существительные для тестирования с:
un ami
un café
un chapeau
un concert
un crayon
un garage
un garçon
un lit
un livre
un mari
un musée
un oncle
un ordinateur
un pantalon
un piano
un pique-nique
un portable
un père
un sandwich
un saxophone
un stade
un stylo
un théâtre
un téléphone
un voisin
une botte
une boum
une chaise
une chaussette
une chemise
une clarinette
une copine
une femme
une fille
une glace
une heure
une lampe
une maison
une montagne
une personne
une piscine
une pizza
une radio
une raquette
une salade
une souris
une sœur
une table
une télé
une voiture
Ответы:
CJam, 0 неверно,
3229 байтЭтот код использует несколько нечетных символов (некоторые из них непечатаемые), но все они находятся в расширенном диапазоне ASCII. Опять же, я считаю каждый символ одним байтом.
Из-за непечатаемых символов, я уверен, что Stack Exchange проглатывает некоторые из них, так что вы можете скопировать код из счетчика символов (он показывает байты с кодировкой UTF-8, что неоптимально для этой задачи; также ссылка не ' Кажется, что работает в Firefox, но работает в Chrome).
Проверьте это здесь.
После некоторого обсуждения в чате, мы решили, что регулярное гольф не принесет нам гораздо большего. Поэтому, следуя моему более раннему (шутливому) предложению, мы начали изучать манипулирование кодами слов для определенных функций, чтобы все слова из одной группы давали число с некоторым свойством, которое легко проверить. И нам повезло больше, чем мы ожидали! Вот что код делает со словами:
[133, 122, 80, 66, 58, 26, 20, 14, 9, 4]
. Эта последовательность чисел сама закодирована как кодовые точки строки (вот где появляются странные и непечатные символы).0
или1
, и все 25 женских существительных дают2
или3
с этой процедурой. Поэтому, если мы разделим это на2
(целочисленное деление), мы получим нули для существительных мужского рода и нули для существительных женского рода.Чтобы округлить его, мы нажимаем
"un"
на стек, мы толкаем одинe
. Затем мы читаем входное слово из STDIN и выполняем вышеприведенные вычисления и, наконец, умножаемe
результат на результат.Я никогда не складывал по модулю ни в один список раньше, и я чувствую, что никогда не буду снова ...
Большое спасибо за xnor и Sp3000 за то, что они бросили идеи и помогли с поиском цепочки делителей.
источник
Рубин, 0 неверно,
635653525150 байтВсе символы в расширенном ASCII , в частности, ISO 8859-1 , поэтому я считаю каждый символ одним байтом.
Похоже, ваш тестовый набор был слишком коротким. Я сгенерировал регулярное выражение с помощью мета-регулярного гольфиста Питера Норвига .
Вы можете вызвать вышеуказанную функцию, как
f["ami"]
. Вы можете использовать этот тестовый комплект для проверки всех тестовых случаев:Проверьте это на полигоне.
Редактировать: Используя второй сценарий Питера Норвига, я нашел другое регулярное выражение, которое на самом деле было на один байт длиннее, но которое я мог сократить на два байта вручную.
Редактировать: Sp3000 установил гольфиста регулярных выражений, который он написал для моего недавнего вызова регулярных выражений, и нашел регулярное выражение
363534 байтов для меня, чтобы использовать. Спасибо за это!источник
table
она является подстрокойportable
, и переключение, для которого установлено соответствие, не очень полезно, потому что второй набор кажется легче сопоставить ...CJam, 0 ошибок (
36322928 байт)Это именованная функция, поэтому я считаю только внутренний код. Кроме того,
o
это оператор печати, поэтому он не влияет на количество байтов.Попробуйте тестовые случаи в интерпретаторе CJam .
Как это устроено
Просто хэш-функция и поиск по таблице.
источник