Каждому из этих девяти схожих до смешного слов присвойте число 1-9 любым удобным для вас способом:
though
through
thorough
Thoreau
throw
threw
trough
tough
troll
Напишите программу, которая принимает строку. Если вход является одним из этих девяти слов, выведите номер, который вы ему присвоили. Если ввод не является одним из слов выше, программа может делать что угодно (включая ошибку или цикл навсегда).
Слова чувствительны к регистру, например Thoreau
, должны давать число от 1 до 9, но thoreau
не обязательно будут делать то же самое.
пример
Предположим, вы назначаете номера следующим образом:
though 9
through 2
thorough 7
Thoreau 6
throw 3
threw 5
trough 4
tough 1
troll 8
Затем, когда tough
ввод, 1
должен быть вывод.
Когда through
ввод, 2
должен быть вывод.
Когда throw
ввод, 3
должен быть вывод.
, , ,
Когда though
ввод, 9
должен быть вывод.
Все остальные входы могут делать что угодно.
Детали
- Возьмите входную строку через stdin или командную строку и выведите ее в stdout.
- Вывод может содержать один завершающий перевод строки.
- Вместо программы вы можете написать функцию, которая принимает строку и обычно печатает результат или возвращает его.
- Самая короткая подача в байтах побеждает .
code-golf
kolmogorov-complexity
Кальвин Хобби
источник
источник
find
метода строки Python . Затем правила изменились. Умная идея теперь не такая умная.Ответы:
CJam,
11 97 байтКак это работает :
Мы используем тот факт, что сумма кодов ASCII + 2, смоделированных с 11, дает очень хороший порядок от 1 до 9, а затем 10 для девяти рассматриваемых слов. Вот заказ:
Объяснение кода :
4 байта сохранены благодаря user23013
Попробуйте онлайн здесь
источник
q1b2+B%
.Пиф, 8 символов
Попробуйте онлайн: демонстрация или тестовый набор
Я использую назначение:
Объяснение:
Кстати, я нашел магическое число 8109, используя этот скрипт:
fqr1 10Sme%CdT.z1
.источник
Python 2,
9254 байтаСтрока индекса создается с помощью
for word in words: print chr(hash(word)%95+32),
. Как указано в ответе Якуба, хеш-функция будет давать разные результаты в зависимости от версии Python. Эта индексная строка рассчитана на 64-битном Python 2.7.6.Более длинный (92 байта), но менее загадочный ответ:
Программы возвращают 1-9, хотя через тщательный бросок Торо бросил корыто жесткого тролля в этом порядке. Когда вход не найден, find вернет -1, что удобно превращается в ноль после
+1
.источник
0
материал больше не требуется. Извините, что изменил это на вас.32-битная версия Python 2.7.9, 22 байта
Обратите внимание, версия действительно важна здесь. Вы получите другие результаты, если вы используете 64-битную версию Python. Поскольку
hash
метод будет вычислять 64-битные хеш-значения вместо 32-битных.Назначение:
Попробуйте онлайн: http://ideone.com/Rqp9J8
источник
sorted(...)==range(1,10)
я остановился.Pyth, 7 байт
Я использую следующее назначение:
Cz
интерпретирует ввод как базовое 256 число. Затем мы берем этот мод 31, вычитаем 1 и получаем результат мод 10. Эквивалентный псевдокод:Демонстрация , проверка жгута .
источник
Python 2, 27 байт
С этим назначением:
Возможны несколько вариантов, например
источник
Japt , 6 байт
Попробуй это | Проверьте все слова
объяснение
Использует тот факт, что при разборе базовой
n
строки до целого числа JavaScript прекратит синтаксический анализ, если встретит цифру больше, чемn
и вернет результат до этой точки. При использовании base-32 здесь (цифры0-v
)w
s в «threw» и «throw», по сути, игнорируются.JavaScript, 22 байта
Прямой перевод - не стоит размещать его отдельно.
источник
C (gcc) , 66 байт
Попробуйте онлайн!
источник
-O
флаг компилятора.h;f(char*s){for(h=33;*s;)h^=*s++;h=index("(Z5qW]2@H",h)-"H"+9;}
Java 8,
5325 байтили
Порт ответа CJam @Optimizer, потому что это (скорее всего) не может быть сделано короче в Java ..
Попробуйте онлайн.
источник
parseInt
, не так ли? Разве порт моего решения не будет короче?parseInt
с заданной базой, но, к сожалению, она является чрезмерно байтовой из-за требования статического класса:Long.parseLong(...,32)
как самый короткий вариант. Кроме того, кажется"throw"
"threw"
, что по какой-то причине он не работает (и также) в Java .w
кажется, что находится вне диапазона base-32 (а использование 33 дает неверные результаты).Желе , 7 байт
Попробуйте онлайн!
Скучный желе порт фантастического ответа CJam.
источник