Самый быстрый лис на Востоке


15

В духе Привет, мир! без повторений

Напишите программу, которая печатает строку «Быстрая коричневая лиса перепрыгивает через ленивую собаку» с дополнительным переводом строки. Вся программа не должна повторять символы.

Обратите внимание , что строка для печати делает повторяющиеся символы, так что вам придется обойти это ограничение каким - то образом.

Обратите внимание, что условием победы является , т.е. выигрывает ответ с наибольшим количеством голосов .

Обновление: чтобы сделать это немного проще, повторение разрешено, но вы должны попытаться свести его к минимуму. Программы с меньшим (или отсутствующим) повторением имеют приоритет перед программами с некоторым повторением.


Боюсь, что это, вероятно, слишком сложно, если не невозможно. Hello world!без повторений было достаточно сложно, чтобы людям приходилось прибегать к очень нишевым языкам, или они вообще не могли полностью решить задачу, а этот значительно сложнее.
FireFly

3
Ну, это конечно невозможно в C. Вы не можете вызывать функции или использовать макросы.
Оберон

Я рекомендую: напечатать данную строку с как можно меньшим количеством повторяющихся символов .
Прим

@FireFly не заставил себя долго ждать ответов :)
SirDarius

3
@ tmartin Нет, это не так. Связанный вопрос способствует повторению, в то время как настоящий вопрос наказывает его.
Gerrit

Ответы:


32

Microsoft Word с 97 по 2003 (и некоторые версии Mac Word) - 10 символов

Нет повторений, но не совсем соответствует спецификации - 10 символов:

=rand(2,1)

Выход:

The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog.

Соответствует спецификациям, кроме заглавных и пунктуации, одно повторение - 10 символов:

=rand(1,1)

Выход:

The quick brown fox jumps over the lazy dog.

В более новых версиях Microsoft Word используется =rand.old(1,1)дубликат dи 1.

Может быть способ использовать поле в {=SUM(3,-2)}качестве входных данных для rand (), но в моей установке возникают проблемы с полями, а именно: они не работают ...

«Боб» подтвердил, что {=SUM(3,-2)}(с некоторыми трудностями) можно использовать для замены первого 1, но =повторяется ...

=rand({=SUM(3,-2)},1)

При условии, что вы получите Word для обновления в SUMпервую очередь, вывод:

The quick brown fox jumps over the lazy dog.

Я не уверен, что данный синтаксис правильный, но у меня нет старых систем для его проверки. Для более новых версий, хотя, это должно быть =rand.old(1,1). Я полагаю, что вы пытаетесь использовать 3-2 для замены первой 1, но в 2010 году она не работает для меня с rand.old или rand.
Изи

У меня здесь тоже нет системы, я проверю, когда вернусь домой. Возможно, необходимо использовать фигурные скобки в { ... }качестве разделителей, но я почти уверен, что выражения можно использовать в любой функции. Если нет, я пересмотрю!

2
Я могу подтвердить {=SUM(3,-2)}работы в Word 2007. Но метод немного сложен. Сначала вы должны вставить код поля (Ctrl + F9). Затем щелкните правой кнопкой мыши => изменить поле => формула => расширенный => введите формулу. Потому что ввод его напрямую не работает по любой причине. Теперь нажмите на поле и оцените с помощью Shift + F9. И добавить=rand.old()
Боб

Нужно ли использовать =SUMили просто использовать арифметические операторы напрямую, как 3-2?
суперкат

@supercat - Мы попробовали это, и по какой-то причине Word не принимает выражения в качестве параметров =rand(), например, =rand(3-2,1)было бы идеально. Я на самом деле не пытался =rand({=3-2},1), но это должно работать так же, с дублированием =.

17

Скриптинг - 36 символов

덆둥긇굵늖꽫긆깲닷덮긂롦닲롸껂걪덖륰댲걯덦넬댢건늆넠닆굺뎒걤닶댬首坼

(ожидает пустой ввод)

Объяснение:

Push the string "the quick brown ,fo,x, jumps ove,r the lazy dog,"
덆둥긇굵늖꽫긆깲닷덮긂롦닲롸껂걪덖륰댲걯덦넬댢건늆넠닆굺뎒걤닶댬
Retrieve last character from the string (",")
首
Regular expression string-split
坼

Результатом является список ["the quick brown ", "fo", "x", " jumps ove", "r the lazy dog", ""], который автоматически объединяется в одну строку для вывода.


1
Я считаю 105 байт, не говоря уже о нескольких повторениях. Символ 235 , например, используется 20 раз.
Прим

11
«Не должно повторять символы », а не «не должно повторять байты».
Plutor

3
Я не удивлен, Тимви, твой собственный язык идеально подходит для испытаний «без повторяющихся символов».
Пьер Арло

13

Perl 6 (76 символов, без парных)

Сценарий (будет искажен программным обеспечением платы, но есть En Space до Thin Space и NL, LF и табуляция)

say EVAL    lc q{<the Quiţk Brown fïX jUmpS ůvťɲ Tɨå ìšzY dOg>~&(127.CHR
x
43)}
  • Он использует EVAL (еще раз спасибо за то, что он сделал его заглавными) и заключает в <foo bar>кавычки слова, которые поддерживают все специальные пробелы в качестве разделителей слов.
  • say присоединяется к списку строк, используя пробел, прекрасно работает здесь :)
  • Затем я использую ~&и 127, чтобы немного перемешать в простой ascii. Дополнительное усложнение: 'Ŭ'.lcстановится 'ŭ'так, что становится sвместо того, что rмне нужно. Добавление 128 несколько дополнительных раз помогает :)

Версия с обратной косой чертой вместо символов Юникода показывает, что все они разные

say\x[3000]EVAL\x[9]lc q{<the\x[2003]Qui\x[163]k\x[2004]Brown\x[2005]f\x[EF]X\x[2006]jUmpS\x[2007]\x[16F]v\x[165]\x[272]\x[2008]T\x[268]\x[E5]\x[2009]\x[EC]\x[161]zY\x[200A]dOg>~&(127.CHR\x[0A]x\x[0D]43)}

Если вы хотите убедиться, что все они уникальны, используйте этот скрипт (у меня Qb"string"были базовые кавычки только с обратной косой чертой)

.say for 
Qb"say\x[3000]EVAL\x[9]lc q{<the\x[2003]Qui\x[163]k\x[2004]Brown\x[2005]f\x[EF]X\x[2006]jUmpS\x[2007]\x[16F]v\x[165]\x[272]\x[2008]T\x[268]\x[E5]\x[2009]\x[EC]\x[161]zY\x[200A]dOg>~&(127.CHR\x[0A]x\x[0D]43)}"
.comb.Bag.grep(*.value > 1).map: {.key.ord.base(16) ~ " $_"  }

Или выполнить его напрямую, используя

EVAL Qb"say\x[3000]EVAL\x[9]lc q{<the\x[2003]Qui\x[163]k\x[2004]Brown\x[2005]f\x[EF]X\x[2006]jUmpS\x[2007]\x[16F]v\x[165]\x[272]\x[2008]T\x[268]\x[E5]\x[2009]\x[EC]\x[161]zY\x[200A]dOg>~&(127.CHR\x[0A]x\x[0D]43)}"

10

PHP - 67 байт

<?echo$g^¶¥€¼½ˆ•.${~˜}=ÂÍåœÌýü¡¦Åþ¾’‹Ï†£‘ƲáºëÓâæݗߙ󖎸·³ø‰ï®ÜØÔ;

Копировать-Вставить, сохранить как Latin-1 (Ansi).

Это 7-байтовый xor-шифр, использующий строку ¶¥€¼½ˆ•для соли.

Один повторил характер: $.


Вы можете сократить его еще на 3 символа, используя, <?=так как вы уже используете короткие теги
Kristoffer Sall-Storgaard

Ах, извините, только что заметил, что вы уже используете =
Кристоффер Салл-Сторгард

@KristofferSHansen Я думаю, что это должно быть возможно использовать eval('Return$g=binary;') в некоторой загадочной форме (возможно, инверсия битов), чтобы избежать $повторения, и тогда он также =будет освобожден.
Прим

Открывающий тег не должен быть включен в число байтов.
TecBrat

@TecBrat Финал ; может быть заменен закрывающим тегом: это тоже не должно учитываться? Короче я не согласен. Если ваш код не работает как есть, это не полная программа.
прим

0

Хаскель, 71 персонаж

map(\c->chr$mod(ord c)128)"tŨeఠquiţkĠbŲɯwnȠfѯxРjѵŭŰsܠůvťѲठѴѨѥਠlšzyଠɤկg"

Еще одно 7-битное модульное решение.

Повторные символы:

c 3
d 2
m 2
o 2
r 2
( 2
) 2
" 2

Первый раз игра в гольф с Haskell; кто более опытный в языке, не стесняйтесь улучшать. Я хотел сделать анонимную функцию бессмысленной, чтобы не упоминать переменную дважды, но я не знаю, будет ли это чистой выгодой.


0

JS, 35

btoa("¶ªº'$nº0ú1驲ޮØ^¬òv")

(да ... двойная кавычка повторяется. и результат плохой. Это еще не серьезный ответ.)


-2

Пакетный скрипт: 7 байт

echo %1

Если сценарий называется hello.bat, введите его в командной строке:

hello.bat "The quick brown fox jumps over the lazy dog"

Это, это так ... без учета регистра! (Я имею в виду, он не печатает точно, о чем спрашивает вопрос.)
Мистер Листер

6
Вводя это в командной строке, вы повторяете символы.
gerrit
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.