правила
С учетом кода страны ISO3166-1-Alpha-2 ваша задача - определить направление движения для этой страны:
- На входе будет действительный код страны (действительный, как в элементе двух представленных списков)
- Ввод может быть списком из двух символов вместо строки, если это помогает
- Вы можете выбрать ввод в нижнем регистре
- Вы выберете одно значение, скажем для правильного (ваш выбор), и выведите это значение, если трафик в этой стране правосторонний, а в другом случае - что-нибудь еще.
- Вам нужно обрабатывать только коды стран, которые содержатся в одном из этих списков:
Это все страны, где движение левша:
['AI', 'AG', 'AU', 'BS', 'BD', 'BB', 'BM', 'BT', 'BW', 'VG', 'BN', 'KY', 'CX', 'CC', 'CK', 'CY', 'DM', 'FK', 'FJ', 'GD', 'GG', 'GY', 'HK', 'IN', 'ID', 'IE', 'IM', 'JM', 'JP', 'JE', 'KE', 'KI', 'LS', 'MO', 'MW', 'MY', 'MV', 'MT', 'MU', 'MS', 'MZ', 'NA', 'NR', 'NP', 'NZ', 'NU', 'NF', 'PK', 'PG', 'PN', 'SH', 'KN', 'LC', 'VC', 'WS', 'SC', 'SG', 'SB', 'SO', 'ZA', 'GS', 'LK', 'SR', 'SZ', 'TH', 'TL', 'TK', 'TO', 'TT', 'TC', 'TV', 'UG', 'GB', 'TZ', 'VI', 'ZM', 'ZW']
И вот все страны, где движение правостороннее:
['AF', 'AX', 'AL', 'DZ', 'AS', 'AD', 'AO', 'AQ', 'AR', 'AM', 'AW', 'AT', 'AZ', 'BH', 'BY', 'BE', 'BZ', 'BJ', 'BO', 'BA', 'BV', 'BR', 'IO', 'BG', 'BF', 'BI', 'CV', 'KH', 'CM', 'CA', 'CF', 'TD', 'CL', 'CN', 'CO', 'KM', 'CG', 'CR', 'CI', 'HR', 'CU', 'CW', 'CZ', 'KP', 'CD', 'DK', 'DJ', 'DO', 'EC', 'EG', 'SV', 'GQ', 'ER', 'EE', 'ET', 'FO', 'FI', 'FR', 'GF', 'PF', 'TF', 'GA', 'GM', 'GE', 'DE', 'GH', 'GI', 'GR', 'GL', 'GP', 'GU', 'GT', 'GW', 'GN', 'HT', 'HM', 'VA', 'HN', 'HU', 'IS', 'IR', 'IQ', 'IL', 'IT', 'JO', 'KZ', 'KW', 'KG', 'LA', 'LV', 'LB', 'LR', 'LY', 'LI', 'LT', 'LU', 'MG', 'ML', 'MH', 'MQ', 'MR', 'YT', 'MX', 'FM', 'MC', 'MN', 'ME', 'MA', 'MM', 'NL', 'NC', 'NI', 'NG', 'NE', 'MP', 'NO', 'OM', 'PW', 'PA', 'PY', 'PE', 'PH', 'PL', 'PT', 'PR', 'QA', 'KR', 'MD', 'RE', 'RO', 'RU', 'RW', 'BL', 'MF', 'PM', 'SM', 'ST', 'SA', 'SN', 'RS', 'SL', 'BQ', 'SX', 'SK', 'SI', 'SS', 'ES', 'PS', 'SD', 'SJ', 'SE', 'CH', 'SY', 'TW', 'TJ', 'MK', 'TG', 'TN', 'TR', 'TM', 'UA', 'AE', 'UM', 'US', 'UY', 'UZ', 'VU', 'VE', 'VN', 'WF', 'EH', 'YE']
Для полноты, вот CSV-файл, который содержит все значения вместе с названиями стран.
Testcases
Предполагая, что вы выбрали вывод L
для левостороннего трафика, вот несколько допустимых тестовых примеров:
'PY' -> 'python'
'PN' -> 'L'
'CN' -> 33
'GY' -> 'L'
Примечание. Существует небольшая вероятность того, что я пропустил страну или неверную классификацию, и я не буду менять спецификации, поскольку это может сделать недействительными ответы. Если я сделал ошибку, я искренне извиняюсь, пожалуйста, не обижайтесь!
CountryData
может указывать количество асфальтированных и грунтовых автомобильных и железных дорог и т. Д. В стране, но не направление движения :(Ответы:
Python 2 ,
145136112109 байтПопробуйте онлайн!
Выходы
-1
для праворукого трафика.Строка генерируется автоматически с помощью этого скрипта Retina .Спасибо полностью человеческому за 9 байт короче строки поиска. Благодаря предложению AdmBorkBork я смог получить еще 24 байта .Получил строку поиска на 3 байта короче, используя скрипт Python.
источник
OT
не существует, можете ли вы избавиться от некоторых пробелов, какTO TC
идетTOTC
?Желе , 61 байт
Большое спасибо @ Mr.Xcoder за помощь
в сборке. Сохранено 1 байт благодаря @JonathanAllan
Возвращает
0
для правшей или1
для левшей.Попробуйте онлайн!
Как?
Мы конвертируем каждый код страны в целое число N , анализируя его как base-256, и применяем следующую хеш-функцию, которая не сталкивается с левосторонним и правосторонним трафиком:
Это приводит к следующему списку значений для левостороннего трафика:
Средняя разница между двумя последовательными записями близка к 8. Мы дельта-кодируем список с приращениями в диапазоне [1 ... 16]. Это означает, что всякий раз, когда приращение больше 16, нам нужно вставить промежуточное значение в неиспользуемый слот (мы должны убедиться, что он не затронут правым трафиком). Но хеш-функция была выбрана таким образом, что нам нужно сделать это только для нескольких позиций. Это дает:
Мы преобразуем этот список из bijective base-16 в следующее целое число:
который становится
“ŒỴ¬Ʋ>r¤dị|®ædHẇ⁸ɗH^CŒ³ẇPḷgȤƲȥƓƑ®Ƭṅḅ4ṛḟṄ’
в кодировке Jelly's base-250.Первая ссылка перестраивает исходный список из этого целого числа, а вторая проверяет, содержит ли он хэш ввода.
источник
“ŒỴ¬Ʋ>r¤dị|®ædHẇ⁸ɗH^CŒ³ẇPḷgȤƲȥƓƑ®Ƭṅḅ4ṛḟṄ’ḃ⁴
(таким образом, избегая приращения) ... также (не байт, но)¢
вызывает последнюю ссылку как nilad.PowerShell ,
161148 байтПопробуйте онлайн!
Наивноесопоставление с образцом регулярных выражений. ВыходыTrue
для левшей иFalse
для правшей.Сохранено 13 байтов благодаря регулярному выражению Mercator.
источник
[CFHW][CJKSXY]
(-5), I и J в[IJ][DEMNP]
(-3), сократить N вN[AFP-Z]
(-1) и Z вZ.
(-4), всего -13 байт. Новое регулярное выражение =A[GIU]|B[BDMNSTW]|[CFHW][CJKSXY]|DM|G[BDGSY]|[IJ][DEMNP]|K[EINY]|L[CKS]|M[OS-WYZ]|N[AFP-Z]|P[GKN]|S[BCGHORZ]|T[CHKLOTVZ]|UG|V[CGI]|Z.
Haskell , 137 байт
-5 байт благодаря овс.
Попробуйте онлайн!
Сгенерировал оригинальную строку вручную.
источник
TTHSZWMSGSONPKNZMWVIDFKELSCYJPNFJMTVCXBNRBWSHKYAUGGYBTLCCKIMVGBSBBMZAINAGDMOBDIEJEMYMUNUPGSRLKTKTOTCTZ
SZAINAGGDMOAUGBBSCCKIMWSHKYLSBMVGSGYBDBTHBWBNRMZMTLCXSRTVCYPNFKNPKEFJMYVIDIEJPGJEMUNZWMSONULKTKTOTTCTZ
- Попробуйте онлайн!05AB1E ,
8268 байтВыходы 1 для левого трафика и 0 для правого трафика.
Попробуйте онлайн! или как тестовый набор
Использует строку, сгенерированную полностью человеком и улучшенную с помощью ovs
источник
05AB1E , 76 байт
Попробуйте онлайн!
Выводит следующую строку:
Если я разделю это на пробелы, и чередую алфавит в каждую строку, это приведет ко всем состояниям, которые движутся с левой стороны.
1 для левого, 0 для правого; Эмигна лучше, но это чувствуется достаточно по-другому, чтобы разместить :).
источник
Желе , 69 байт
Монадическая ссылка, принимающая список символов и возвращающая,
1
если слева (0
если справа).Попробуйте онлайн!
Как?
Использует метод , как реализованный totallyhuman / овс .
Кроме того, то, что я сделал самостоятельно, заняло 72 байта :
Также монадическая ссылка, принимающая список символов и возвращающая,
1
если слева (0
если справа).Попробуйте онлайн!
Как?
источник
Befunge,
155152147146 байтПопробуйте онлайн!
Выходы
80
для правшей страны, и все остальное указывает на леворукую страну.объяснение
Нижняя строка кода содержит представление всех левых стран. Это список первых символов кодов стран, сгруппированных по второму символу. Конец каждой группы помечается нижним регистром последнего символа в группе.
Так, например, первая группа
Nz
, представляетNA
иZA
. Вторая группа,BSg
представляетBB
,SB
иGB
. Существует одна группа для каждой буквы в алфавите, за исключением буквыQ
(коды левой страны не заканчиваютсяQ
). Эта пустая группа представлена символом{
, поскольку она явно не будет соответствовать ни одному действительному коду страны.Чтобы определить, соответствует ли данный код страны одной из этих записей, мы перебираем список, проверяя, соответствует ли какой-либо из символов в списке первому символу нашего ввода (мод 32 для учета регистра), а также что соответствующая группа , соответствует второму символу ввода. Символ группы начинается как
A
, и увеличивается каждый раз, когда мы встречаем строчную букву в списке.Мы завершаем работу, когда находим совпадение, и выводим последнее значение символа в стеке (которое будет первым символом кода страны - возможно, строчными). В противном случае мы выйдем, когда будем перебирать весь список, и в этом случае мы будем выводить последнее число в стеке, которое всегда равно 80.
источник
Пакет Windows,
289279199193181130118 байтВыводит строку ovs для левого трафика, иначе ничего не выводится.
Примечание. Я заметил, что если входные данные содержат какой-либо код страны в приведенном выше списке, они все равно будут выводить букву L. Однако это не нарушает правила вызова, поскольку в OP упоминаются только коды стран, которые необходимо обрабатывать.
Объяснение:
источник
C (gcc) ,
181169165 байтовПопробуйте онлайн!
источник
82
чтобы сохранить байт?9
например, вывел бы символ табуляции.Python 2 , 144 байта
Попробуйте онлайн!
Отпечатки
True
слева,False
справа.источник
Сетчатка ,
150117 байтПопробуйте онлайн!
источник
Excel VBA, 118 байт
Функция анонимного непосредственного окна VBE, которая берет данные из ячейки
[A1]
и выводит,0
если страна правшаиспользует строку ovs
источник
Japt,
12610097 байтИспользует
строкупоиска полностьючеловеческих овов. Принимает ввод в нижнем регистре и выводfalse
для RHD илиtrue
иным образом.Попытайся
Все между кавычкой является поиск строки строчной и прессует и
ø
проверяет, содержит вход,U
.источник
Pyth ,
60575550474644 байтаЗапустить онлайн
Принимает ввод в виде строки в кавычках в верхнем регистре (
'AI'
). Возвращает3
влево и не3
вправо.Как это работает
Генерация волшебной струны
источник
sed,
148 + 1145 + 1143 + 1142 + 1 байтОдин дополнительный байт для
-r
флага (расширенные регулярные выражения POSIX).Выводит пустую строку для левостороннего трафика, исходный код страны для правостороннего трафика.
Пример:
Объяснил историю редактирования:
sed,
158 + 1155 + 1153 + 1152 + 1 байт, непустой ответНебольшое изменение предыдущего. Возвращает
L
за левостороннее движение.источник
J[^O]
вместоJ[EMP]
?[^L]B|[^EMN]C|GD|[I-K]E|[AGPSUV]G|[AKV]I|FJ|[^DMS]K|TL|JM|[KP]N|JP|SR|[BGLW]S|[BT]T|AU|TV|CX|[CGK]Y|M[OS-WYZ]|N[AFP-Z]|[BI][DMNW]|[ST][HOZ]|Z.
J[^O]
самом деле был когда-то в моем списке небольших регулярных выражений, интересно, как я пропустил это. Спасибо за указание на это! Что касается группировки по второй букве: в дополнение к группировке по K вы можете просто использовать|[AGPSUV]G
или,|[BGLW]S
но это не изменит общий счет вообще.APL (Dyalog) , 108 байт
Попробуйте онлайн!
Использование строки поиска по ovs.
Левостороннее движение =
1
.Правостороннее движение =
0
.источник
Javascript (ES6),
118116 байтовСохранено 2 байта благодаря @Craig Ayre
Возврат
null
за праворукий трафикТестовые случаи
Показать фрагмент кода
источник
String.prototype.match()
и иметь правостороннее движение, обозначенное какnull
? Сохранит 2 байтаVim,
117109108 нажатий клавишПопробуйте онлайн! (заменить
SE
в шапке на код страны)␛
это ключ к выходу. Программа печатает следующий текст для праворукого трафика:объяснение
источник
MY-BASIC , 162 байта
Анонимная функция, которая принимает входные данные в виде развернутой строки (то есть без скобок) и выводит их на консоль
Возврат
0
за правша и1
левша, попробуйте онлайн!источник
Ябасич , 127 байт
Анонимная функция, которая принимает входные данные в виде развернутой строки (нет
"..."
) и выводит их,0
если Страна правша и1
если страна левша.Попробуйте онлайн!
источник
C (gcc) ,
115107 байтПопробуйте онлайн!
Возвращает,
0
если левша. -4 благодаря @JonathanFrechисточник
short*
качестве параметра?К 105 байт
Для получения информации о языках K / Q см. Code.kx.com
Используйте: код страны (строка из 2 символов, пример "XY") после
Генерирует
1b
(левостороннее движение) или0b
(не левостороннее движение)Объяснение:
5h$"XX"
генерирует коды ascii для каждого символа строки из 2 символов (код страны), пример5h$"TB"
генерирует 84 66-65+integerList
вычтите 65 к каждому целому числу в списке. Пример-65+5h$"TB"
генерирует 19 126/:integerList
вычисляет целочисленный эквивалент этого списка в виде цифр в 26-значном числе. Пример26/:-65+5h$"TB"
генерирует 495 (код страны как целое число)in[;listOfCountryCodesAsIntegers]@x
возвращает логическое значение (1b = true, 0b = false). True, если x находится в списке+\-48+5h$"62<729151368=1>a1A23<6<C181A83?45;488F411112115:235Q43r141738353135247F42Tl<:"
вычисляет список целых чисел для каждого кода страны с левосторонним трафиком"62<729151368=1>a1A23<6<C181A83?45;488F411112115:235Q43r141738353135247F42Tl<:"
является «строкой расстояния» (расстояние между каждой парой целочисленных кодов стран в порядке возрастания, кодированное как символ). Расстояние n кодируется как ascii char 48 + n-48+5h$".."
вычисляет значение ascii каждого символа в строке ".." и восстанавливает исходное расстояние в виде ascii-кода - 48. Результатом является список расстояний+\integerList
вычисляет частичное суммирование элементов из списка -> абсолютные целочисленные коды стран по расстояниям между кодами.ЗАМЕТКИ.-
0b
по любому не левостороннему коду страны, включая недействительные коды страныin[26/:-65+5h$"XX";+\-48+5h$"..."]
источник