Вы должны написать программу или функцию, которая выводит или возвращает столько главы I «Маленького принца», сколько может. Ваша программа или функция должны быть блоком кода M-by-N, содержащим только печатаемые символы ascii (кодовая точка от 32 до 126) и символы новой строки в конце каждой строки.
Вы можете использовать не более 26 символов по вашему выбору из 96 печатных символов ascii (и символов новой строки в конце строк).
В каждой строке и столбце каждый символ должен быть отличным, как в пазле судоку, то есть в строке или столбце не может быть буквы дважды.
Правильный пример кодового блока с M = 4
, N = 3
и alphabet = {a,b,c,d,/,*}
:
abcd
bcd*
*/ac
Детали кода
- Вы можете выбрать форму вашего кодового блока (т.е.
M
иN
). - Блок должен быть полностью заполнен символами, т.е. каждая строка должна иметь одинаковую длину.
- Завершающий перевод строки в конце последней строки не является обязательным.
- Как написано выше, в каждой строке и столбце каждый символ должен быть отличным.
Детали вывода
- Вы должны вывести или вернуть префикс главы I «Маленького принца» без каких-либо дополнительных выходных данных.
- Если вы достигнете новой строки в тексте, вы можете представить ее как любой общий вариант (\ r, \ n, \ r \ n), но использовать только один из них и считать его как 1 байт для оценки.
- Дополнительный завершающий перевод новой строки не является обязательным.
Ваша оценка - это длина выходного текста, за исключением дополнительного символа новой строки, если он есть. Чем выше оценка, тем лучше.
Пример ответа
##Python3, score = 6
alphabet = `print('O\ce w)#X` (alphabet element count = 16)
print('O\
nce w')#X
Вы можете проверить правильность своего кода с помощью этой программы Python 3 (ideone) или этой программы CJam (онлайн), предоставляемой @ MartinBüttner.
Ответы:
CJam, 47
Попробуйте онлайн
Алфавит:
"'*-/2INOSacdehilmnorswxy
Объяснение:
источник
зернышко , оценка = 38
Алфавит:
"'015:IMORXacdehilnorswxy
(Я уверен, что не хотелось бы попробовать это в реальном языке программирования.)
Объяснение:
источник
Python 3, оценка = 11
Это действительно сложная проблема для Python, поскольку ограничения на повторение символов в строке или столбце делают практически невозможным создание более одной строковой литеральной строки. Таким образом, различные способы объединения строк довольно бесполезны, так как вы не можете получить строки для начала любым полезным способом. Вот моя лучшая попытка:
Обратите внимание, что в конце первой строки есть пробел. Псевдоним
x
дляchr
необходим, чтобы избежать попадания одного и того же символа в несколько столбцов. Символы комментария в конце могут быть почти чем угодно.В алфавите 21 печатный символ плюс перевод строки (обратите внимание на пробел в начале):
Выход:
источник
CJam, счет = 21
Алфавит:
-;INOSacehinoswxy
Просто чтобы мяч катился; это, вероятно, можно легко победить.
источник
CJam, счет = 15
У меня уже некоторое время была эта идея, но у меня не было времени сесть и перемешать вещи, пока не получу необходимую уникальность столбца, так что вот детская версия на данный момент:
Алфавит (26):
" #)*+,0123456789:;=>Ibcef
Попробуйте онлайн .
объяснение
Основная идея состоит в том, чтобы использовать базовое кодирование, чтобы мы могли печатать более 26 типов символов. Основной код
Обратите внимание , что мы относимся к первым
"O"
для"Once"
отдельно , потому что в том числе это в нашей строке заняло бы слишком много нашего алфавита. Если бы мы захотели, мы могли бы попытаться расширить нашу индексную строку, но так как в течение некоторого времени больше никаких символов в верхнем регистре не происходило,"I"
я не слишком беспокоился об этом.Затем нам нужно как-то построить большое число во второй строке. Подход, который я использовал, состоял в том, чтобы многократно умножить на некоторую степень, затем добавить константу и повторить, поэтому в приведенном выше коде
85032995607801617394
заменяетсягде
)
приращение и#
возведение в степень в CJam.Затем остальная часть (самая раздражающая часть) дополняет каждую строку, чтобы соответствовать критериям столбца. Для этого мы сбрасываем символы в строки и используем их
;
для выталкивания. К сожалению, хотя мы очень хотели бы использоватьe#
для комментариев, чтобы сделать вещи проще, тот факт, что#
возведения в степень запрещает это, поэтому это делается только в последней строке.Я вполне уверен, что этот метод может быть расширен до запятой в первом предложении, но, к сожалению, перетасовка вещей для соответствия критериям столбца оказывается сложной, поэтому мне может понадобиться другой метод генерации целочисленного кодированного целого числа.
источник
Python 2, оценка = 13 (неверно)
Python - не лучший язык для этого ... При дальнейшей проверке
n
в моей первой строке есть две буквы "s". Нет достойных лекарств, и я перестану тратить время на Python. В настоящее время я работаю над созданием решения на другом языке, но пока не поделюсь каким.Алфавит (22):
"#(),0167IOcehinprtw
Выход:
Once when I w
источник
n
s. Эта проблема почти невозможна в Python, так как вы можете использовать обратную косую черту продолжения строки только один раз (поскольку обратная косая черта должна быть в последнем столбце), и ни одна строка не может иметь две одинаковые кавычки.