Когда я писал цифры, через некоторое время я заметил, что на клавиатуре была Shiftнажата и заблокирована клавиша, и все, что я писал, было $%&
похоже на символы. И что еще хуже, я переключался между английской и испанской раскладками клавиатуры, поэтому я не знаю, какую из них я использовал для каждого номера.
Вызов
Учитывая строку, содержащую символы символов, попробуйте угадать, какое число я написал. Моя клавиатура выдает следующие символы для цифр при Shiftнажатии:
1234567890
----------
!"·$%&/()= Spanish layout
!@#$%^&*() English layout
- Входными данными будет непустая, непустая строка, состоящая из символов выше.
- Выводом будет одно число, если раскладка клавиатуры может быть выведена из строки (т. Е. Если строка содержит
@
раскладку на английском языке, и если строка содержит"
раскладку на испанском языке) или если число такое же для оба макета (то есть ввод,!$
который переводится как14
для обоих макетов); в противном случае выходные данные будут двумя возможными числами для обоих макетов, если это не может быть выведено, и получающиеся числа отличаются. - Входная строка всегда будет записана в одном макете. Так что вам не нужно ожидать
"@
ввода.
Примеры
Input --> Output
------------------
/() 789 (Spanish layout detected by the use of /)
$%& 456,457 (Layout cannot be inferred)
!@# 123 (English layout detected by the use of @ and #)
()&! 8961,9071 (Layout cannot be inferred)
((·)) 88399 (Spanish layout detected by the use of ·)
!$ 14 (Layout cannot be inferred but the result is the same for both)
!!$$%% 114455 (Layout cannot be inferred but the result is the same for both)
==$" 0042/42 (Spanish layout, if a number starts with 0 you can choose to
omit them in the result or not)
Single character translations:
------------------------------
! 1
" 2
· 3
$ 4
% 5
& 6,7
/ 7
( 8,9
) 9,0
= 0
@ 2
# 3
^ 6
* 8
Это код-гольф , поэтому победит самый короткий код для каждого языка!
·
·
бесполезен для испанского, он используется только на каталонском языке.{(8, 9, 6, 1), (9, 0, 7, 1)}
(для 4-го теста) приемлемым?Ответы:
Желе ,
3231 байтПопробуйте онлайн!
источник
Python 3 , 76 байт
Попробуйте онлайн!
источник
Perl 6 , 62 байта
Попробуйте онлайн!
Возвращает набор. (Можно сделать на два или три байта короче, если бы не было ошибки в обработке Rakudo # в списках поиска.)
источник
Java (JDK) , 173 байта
Golfed
Попробуйте онлайн!
Ungolfed
Массив Magic Hashing Lookup
После некоторых экспериментов со значениями я понял, что каждое из значений ASCII символов
!"·$%&/()=@#^*
по модулю 16 возвращает уникальное число. В «магических хешированиях подстановка массив» хранит английские цифры , связанные с каждым символом в этом уникальном индексе, и каждый из испанских номеров в этом индексе компенсировано 16, что делает выборку требуемое числа из массива тривиального для каждого языка. Хеш хранится для значений, которые являются недопустимыми для любого языка.источник
toCharArray()
и вычисление показателя степени, применяемые к значению int, сделали его намного длиннее, чем оба.contains()
оператора.s.equals(e)|s.contains("#")
может бытьs.matches(e+"|.*#.*")
.Japt, 38 байт
Сначала выводит массив строк с испанским макетом.
Попытайся
источник
Желе , 38 байт
Попробуйте онлайн!
источник
()
или(())
как ввод, но ваш код ничего не возвращает. Я полагаю, это ограничение того, что Jelly получает в качестве входных данных?'()'
и'(())'
соответственно. Да, если вы не заключите аргумент в кавычки, он будет введен в виде строки только в том случае, если он не может быть приведенeval
к значению Python 3.Сетчатка 0.8.2 , 60 байт
Попробуйте онлайн! Ссылка включает в себя тестовые случаи. Объяснение:
Дублируйте ввод.
Попробуйте перевести каждую строку в соответствии с разной раскладкой клавиатуры.
Дублируйте результат.
Сохраняйте только те строки, которые содержат только цифры.
источник
m
последнем этапе?JavaScript (ES6), 99 байт
Попробуйте онлайн!
Как?
x >= 0
источник
05AB1E ,
4241 байтПорт @dylnan 's Jelly ответа .
Попробуйте онлайн или проверьте все контрольные примеры .
Объяснение:
Посмотрите эту подсказку 05AB1E (раздел Как сжать целочисленные списки? ), Чтобы понять, почему
•Hhç₁d©u÷^Σ(“ðΣèõĆ\n-•184в
это так[33,34,183,36,37,38,47,40,41,61,33,64,35,36,37,94,38,42,40,41]
. Это (вместе с2ä
) 1 байт короче , чем принимать значения Юникода строки:'""!ÿ·$%&/()=""!@#$%^&*()"‚Ç
.источник
!$
И!!$$%%
случаи должны выводиться только один номер , как результат является одинаковым для обоих макетов и нет никакой неоднозначности.Рубин , 68 байт
Попробуйте онлайн!
источник
Чисто , 116 байт
Попробуйте онлайн!
Принимает ввод и кодируется в CP437. TIO поддерживает только UTF-8, поэтому в демонстрационном коде используется экранирование для получения буквального значения 250 байта, соответствующего центральной точке (считается одним байтом).
источник
!$%
входе должно выводиться только одно число, а не два, поскольку результат одинаков для обоих макетов.APL (Dyalog) , 40 байт
Функция анонимного молчаливого префикса. Хотя он не используется, он
·
входит в однобайтовый набор символов Dyalog . Предполагается индексирование на основе 0 (⎕IO←0
), которое используется по умолчанию во многих системах.Попробуйте онлайн!
⊂
весь аргумент'=!"·$%&/()' ')!@#$%^&*('⍳¨
индексы символов в каждой из этих строк{∪⍵/⍨~10∊¨⍵}
примените следующую лямбду (⍵
это аргумент):10∊¨⍵
для каждого списка цифр, является ли 10 (указывая «не найден») его членом~
локальное отрицание (т.е. только те, в которых найдены все цифры)⍵/⍨
фильтровать аргумент по этому∪
найти уникальные элементы этогоисточник
Дротик , 125 байт
Ungolfed:
Попробуйте это на Dartpad!
источник
T-SQL, 143 байта
Ввод берется с помощью уже существующей таблицы I с VARCHAR полем V , в соответствии с нашими стандартами IO .
Объединяет входную таблицу с двумя различными символьными строками, а затем использует новую функцию SQL 2017,
TRANSLATE
чтобы поменять отдельные символы иTRY_CAST
посмотреть, получим ли мы число. Если нет,TRY_CAST
возвращаетсяNULL
.Окончательный внешний
SELECT DISTINCT
объединяет идентичные результаты и отфильтровываетNULLS
.источник