Таким образом, мы все, надеюсь, знакомы с нотацией ячейки Spreadsheet 'A1'.
Это просто буквенно-цифровое представление положения указанной ячейки в сетке. Буква (буквы) представляет расположение столбца в ячейке, а число представляет строку.
Часть «буквы» может состоять из 1 или более букв из 26 букв английского алфавита, причем все они должны быть заглавными буквами. Они сопоставляются с числами с помощью 26-адической биективной нумерации. Часть «число» может состоять из любого положительного, ненулевого целого числа.
Задача - написать программу, в которой для каждой ячейки задана нотация A1 в виде одной строки, можно вывести строку, содержащую позицию столбца, представленную в виде числа, за которым следует пробел, а затем номер строки.
Пример входов / выходов ниже:
A1
>>1 1
B10
>>2 10
AC4
>>29 4
AAC753
>>705 753
F123
>>6 123
GL93
>>194 93
Это моя первая проблема, отсюда и относительная простота и потенциальная слабость критериев.
РЕДАКТИРОВАТЬ : строка должна состоять из букв, за которыми следуют цифры, и критерием выигрыша является самая короткая длина кода (если это может быть вещь)
РЕДАКТИРОВАТЬ : Связано с этим, но делает обратный процесс с другим начальным индексом. Некоторые могут утверждать, что этот факт делает связанную головоломку более интересной.
["A", "1"]
Ответы:
05AB1E ,
1211 байтИспользует кодировку 05AB1E . Попробуйте онлайн!
источник
Microsoft Excel, 43 байта.
Я не мог с собой поделать, мне просто нужно было использовать правильный инструмент для работы. Принимает участие на А1.
Тестовые случаи
источник
Microsoft Excel, 40 байт
Бразильско-португальская языковая версия.
Переведенная (и, следовательно, игра в гольф) версия решения ATaco .
источник
Python 2 ,
949173 байта-3 байта благодаря Джонатану Аллану
-18 байтов благодаря tsh
Попробуйте онлайн!
Это злоупотребляет тем, как это
.strip
работает, удаляя все цифры,a=s(`3**39`)
где`3**39`
есть просто более короткий способ генерирования цифр из0
в9
, это будет хранить только те символы,a
которые будут использоваться для удаления символов из чисел наs(a)
источник
strip
ввода необходимо использовать уникальные символы, поэтому3**39
следует выполнять ту же работу.Google Sheets, 43 байта
Попробуйте онлайн!
A1
является входной ячейкой. Надеюсь, что приведенная выше ссылка работает, я никогда раньше не пробовал играть в гольф с Google Sheets.источник
=COLUMN(INDIRECT(A1))&" "&ROW(INDIRECT(A1
за 41 байт. листы заполняет недостающие правильные паренсы.JavaScript, 72 байта
источник
Протон , 113 байт
Попробуйте онлайн!
-19 байт, заимствуя алгоритм Рода ( примечание к себе: добавить списки )
источник
Dyalog APL, 44 байта
Попробуйте онлайн!
источник
(a~⎕D)
. Смотри вверх⎕A
вместо⎕AV
. Сделай молчаливый. Обменный аргумент,
. Получает только 16 байтов:~∘⎕A,⍨26⊥⎕A⍳~∘⎕D
Pyth - 31 байт
Первая попытка, очень наивная.
Попробуйте это онлайн здесь .
источник
Perl 5 , 35 + 1 (-p) = 36 байт
Попробуйте онлайн!
В
map
заявлении рассматривает столбец как число base26 и преобразует его в десятичное. Подстановка заменяет буквы цифрами. Вход и выход неявны в-p
флаге.источник
Mathematica, 108 байт
Оператор,
StringReplace
который принимает буквенную частьc
строки, преобразует ее в список кодов символов, вычитает64
из каждой кодовой точки, интерпретирует результат как базовое26
целое число, преобразует это целое число в aString
, затем вStringJoin
пробел, за которым следует числовая частьr
.Используя регулярное выражение (также
108
байты):источник
ToCharacterCode@c-64
иногда может быть уменьшен доLetterNumber@c
. однако,LetterNumber
не оборачивает вывод,List
когда ввод является одним символом.Желе ,
1615 байтПолная программа, принимающая строку в качестве аргумента и печатающая результат
Попробуйте онлайн!
Как?
Примечание: преобразование из списка чисел с использованием базового атома преобразования
ḅ
позволяет местам находиться за пределами ожидаемого диапазона, поэтому преобразование, скажем, с использованием[2,26,1]
("BZA"
),ḅ26
рассчитывается как 2 × 26 2 + 26 × 26 1 + 1 × 26 0 = 2029, хотя "ожидаемое" представление было бы[3,0,1]
.источник
Mathematica,
77726968 байтПринимает список персонажей.
Попробуйте это на Wolfram Sandbox
использование
или
объяснение
На входе заменить ...
Список, содержащий две последовательности
a
иb
(с 1 или более элементами), гдеb
состоит только из цифр ... (Mathematica использует ленивое сопоставление с образцом, поэтому проверка не требуетсяa
)в...
Установите
f
функцию преобразования цифр в целые числа.Преобразовать
a
в буквенные числа (a -> 1, b -> 2 и т. Д.).Преобразуйте вышеупомянутое из base-26 в десятичное, и преобразуйте
b
в десятичное.источник
Haskell, 67 байт
Попробуйте онлайн.
источник
Сетчатка , 85 байт
Попробуйте онлайн! Объяснение:
Отделите буквы друг от друга и окончательный номер.
Преобразуйте буквы в десятичные.
Переведите все в одинарные.
Хотя есть хотя бы три числа, умножьте первое на 26 и добавьте ко второму.
Перевести все в десятичное.
источник
Рубин ,
5048 + 1 =5149 байтовИспользует
-p
флаг. -2 байта изm-chrzan
.Попробуйте онлайн!
источник
i=i*26+b-64
экономит 2 байта.> <>, 42 байта
Попробуйте онлайн
Объяснение:
Вышеупомянутый цикл будет читать первую часть числовой части (например, «3» в «AB34») перед разрывом, и из него уже будет вычтено 64, поэтому следующий бит кода должен иметь дело с этим
Этот цикл начинается с вывода символа, который будет либо первым знаком, прочитанным первым циклом, либо символом, прочитанным предыдущей итерацией этого цикла.
источник
Рубин,
646159 байтСохранено 2 байта благодаря Value Ink.
источник
$&
последнее совпадение с регулярным выражением, поэтому используйте его вместо того,m
чтобы сохранить 2 байта.Excel-VBA Непосредственное окно,
4445 байт (3635)1 байт добавлен, чтобы подавить завершающий перевод строки
Или за 35 с ведущими пробелами
1 байт сохранен благодаря @TaylorScott!
Оба принимают вход из ячейки A1, выводят в окно VBE Immediate
источник
Trim()
почти все числовые ответы - и на этом я не согласен сSet v=Range([A1]):?v.Column""&v.Row
вашим текущим решением;
когда следующий символColumn
не может быть частью имени подпрограммы. Интересно, есть ли один персонаж, который мог бы сделать то же самое, вероятно, нет. Да, я бы предположил, что начальный пробел будет приемлемым для большинства qus, но для этого я думаю, что это скорее «Печать этой точной строки». Я спросил (последний комментарий к вопросу), и мне не сказали ни пробела, ни перевода строки.Луа, 127 байт
Там идут некоторые приятные манипуляции со струнами, я использую некоторые функции, которые обычно никогда не используются во время игры в гольф в Луа: D. Наилучший способ игры в гольф - это найти другой способ перебора части столбца ввода, сохраняя при этом положение каждой буквы. Я не ^^ '.
Попробуйте онлайн!
объяснение
источник