Вдохновение : в 1939 году человек по имени Эрнест Винсент Райт написал роман под названием Гэдсби, не используя букву «е».
Ваша задача - написать набор (до 5) программ на любом языке (который имеет текстовый синтаксис *), чтобы вывести все 26 букв алфавита по порядку. Однако для каждой гласной aeiou, по крайней мере, одна из программ не должна включать какое-либо появление гласной.
Так должно быть
- программа, которая не использует « a » или « A » где-либо в синтаксисе программы.
- программа, которая не использует « e » или « E » где-либо в синтаксисе программы.
- программа, которая не использует « i » или « I » где-либо в синтаксисе программы.
- программа, которая не использует ' o ' или ' O ' где-либо в синтаксисе программы.
- программа, которая не использует ' u ' или ' U ' где-либо в синтаксисе программы.
Все они должны выводить abcdefghijklmnopqrstuvwxyz
.
Победителем будет решение, при котором длина всех программ самая короткая.
* так как ограничение не будет большой проблемой в Piet или Whitespace
Текущий рейтинг (06 марта 2014):
- A PL : 11
- B ash : 31
- B efunge : 26
- B urlesque : 12
- B Rainfuck : 38
- C : 84
- C # : 278/149
- С вареньем : 6
- C lojure : 81
- D c : 18
- E eslang escript : 75
- F # : 96
- F актер : 264
- F ission : 21
- F orth : 46
- G olfscript : 8
- H askell (переводчик) : 12
- H TML : 50
- J : 17
- J ava : 137
- J avascript : 92
K : 9
К отлин : 112
- L ua : 57
- M arbelous : 96
- М АТЛАБ : 11
- P erl 5 (строка cmd) : 23
- P erl 5.10+ : 23
- P erl : 101
- P HP : 31
- P ostscript : 45
- P owershell : 62
- P ython shell : 48
- P ython : 83
- Р : 36
- R ebmu : 15
- R убий : 20
- R убий 1,8 : 18
- S кала : 55
- Возраст S CLI : 42
- Т кл : 49
- T -SQL : 120
- V BA : 70
code-golf
string
restricted-source
alphabet
shamp00
источник
источник
Ответы:
Golfscript - 8 символов
источник
91,65>+
вместо этого.Brainfuck, 38 символов
Конечно, в синтаксисе brainfuck нет гласных (или любых других букв) .
источник
++[[<+++>->++++<]>]<<<<++[->+.<]
PHP, 31 байт
Нет, я, я, я
Двоичная строка после тильды имеет следующее шестнадцатеричное представление:
Так как есть языковое табло, я также могу представить это:
Ruby (v1.8) 18 байт
источник
php -r 'echo("<?=~\x9e\x9d\x9c\x9b\x9a\x99\x98\x97\x96\x95\x94\x93\x92\x91\x90\x8f\x8e\x8d\x8c\x8b\x8a\x89\x88\x87\x86\x85;");' > script.php
. Команда , чтобы запустить его:php -d error_reporting=0 script.php; echo
.Рубин (
2422)Изменить: круглые скобки могут быть опущены, 2 символа меньше:
24 символа в рубине:
Как это устроено
$>
псевдоним для$stdout
илиSTDOUT
. Вы можете написать в него с помощью<<
оператора. Термин'%c'*26
повторяет строку'%c'
26 раз.%
Оператор определяется на строку в качестве псевдонимаsprintf
, такstr % val
эквивалентно записиsprintf(str,val)
. Символ формата%c
используется для преобразования значения символа в символ. Эти значения происходят из[*97..122]
которого создает массив, содержащий значения от 97 до 122. Et voilá!источник
<<
но забыл о$>
.$>
раньше, но я догадывался, что должен быть какой-то псевдоним с переменной долларом, о$stdout
котором никто не помнит :)$><<[*"`".."z"][1,26]
(примечание: это работает только в Ruby 1.8)p [*"
".." z "] [1,26]` еще короче.Array#to_s
это то же самое, чтоArray#inspect
и в 1.8Array#join
- так что в 1.9 вывод["a", "b", "c", "d", "e", ...]
вместоabcdef...
. По той же причинеp
не может использоваться (он вызываетinspect
свои аргументы вместоto_s
).Pyth , 1 персонаж
Pyth предопределяет определенные переменные. G предопределен как строчный алфавит. Pyth также неявно печатает каждую строку с разумным возвращаемым значением.
источник
JavaScript (100)
Нет 'Aeou':
Нет «я»:
источник
\x##
кодов, но не был уверен, что они действительны в JavaScript.alert
,confirm
,prompt
,console.log
, иdocument.write
. Простое объявление строкового литерала не приводит к его выводу при выполнении. В противном случае вы были бы правы, и я бы этим воспользовался.К, 9
К, 10
К, 14
источник
(@$`)$97+!26
$
принимает символы вместо строк для управления типом, преобразованным в: `c $ 97 +! 26J,
26231716 символовЧерез час или около того рыться в нижнем белье ящик Джея я , наконец , нашел способ устранить
a.
иu:
глаголы.Ранее:
с благодарностью Рандере за
#\
трюк.источник
#\
вместо+/\
.R, 17 + 19 = 36 символов
нет ае (17):
нет я (19):
источник
Баш (38)
Нет гласных вообще.
источник
[[ ! -d "/bin" ]] && mkdir "/bin"; sudo cp "/usr/local/bin/bash" "/bin/bash"
/bin/sh
Bash. Тогда код может заканчиваться/*/sh
(36 байтов). Но я не нашел систему, где это работает. В Debian / bin / sh не является bash. На моем старом Mac / bin / sh - это bash 2.05b0. (1), но эта версия слишком старая и не расширяется{a..z}
.C
90 8884 символовСкомпилировать используя
gcc -nostartfiles
источник
_start
и_exit
это хороший способ обойтиmain
. Но если с нестандартной строкой компиляции все в порядке, почему бы и нет-DX=main
?-DX=main
чувствует себя хуже, чем-nostartfiles
делает (для меня). Это способ переместить часть исходного кода в строку компиляции, и это то же самое, что и запись#define X main
в исходном коде, которая была бы явно недействительной. Принимая во внимание, что-nostartfiles
это не способ переименоватьmain
, но снимает ограничение, что должна бытьmain
функция ( вызывается_start
). С другой стороны, использование-nostartfiles
немного похоже на обман, тем более что оно содержит 4 из 5 «плохих» букв :)-nostartfiles
до-DX=main
мало, и почему бы не сохранить некоторые символы с-DX=main()
и так далее. Но я не могу найти решение, в котором нет ничего подозрительного.-Dmn=main
. Функция AC должна иметьmain
функцию, если не используется нестандартная опция, например-nostartfiles
.Golfscript, 10 символов
источник
Рубин, 20 символов
97.chr
это сложный способ сказать «а»..
указывает диапазон?z
это более короткий способ сказать "Z"[*range]
вызывает диапазон для Splat аль это значение в массиве*''
такой же какjoin('')
; он склеивает все значения массива вместе.$><<
Перлицизм: печать на стандартный вывод.источник
?z
это не сокращение для'z'
, а скорее для122
. Это, однако, работает для 18 байтов:$><<[*97.chr..'z']
97.chr
с?\x61
на -1 байт.DC:
1817 символовИ там умер отважный персонаж.
источник
x
для регистра, что делает мое решение более запутанным.97[dP1+dBD>m]dsmx
17 символов. По-видимому, вы всегда можете ввести шестнадцатеричные символы в DC, но поскольку входная база равна десяти, значение равноB*10+D=11*10+13=123='{'
0xBD.Powershell,
7562 персонажаРедактировать: Использовал -f (String.Format) и индексирование массива, чтобы значительно уменьшить длину кода.
Как это устроено
gm
является псевдонимом дляget-members
, поэтому1|gm
возвращает члены значения1
, которое имеетSystem.Int32
тип:"$(1|gm)"
возвращает строковое представление из приведенного выше списка, который содержит все гласные, необходимые для завершения алфавита: « int C omp ar eTo (System.Object val ue) ...»источник
($x=''+$(gv))[8]+"bcd$($x[4])fgh$($x[25])jklmn$($x[26])pqrst$($x[19])vwxyz"
75 символов :)''+$(gv)
с"$(gv)"
вами получаете($x="$(gv)")[8]+"bcd$($x[4])fgh$($x[25])jklmn$($x[26])pqrst$($x[19])vwxyz"
который составляет 74 символов. Приятно!BASH: 40 символов
aeiou
используетсяисточник
Хаскелл, 12
Или это обман? :)
источник
Parse error: naked expression at top level
MATLAB, 12 + 20 = 32 символа
Нет (12):
Нет (20)
источник
В Perl
это также возможно без гласных
но гораздо сложнее, чем в Ruby и т. д. При этом используется всего 101 символ, но не требуется вызов строки cmd (perl -e).
=> Результат: abcdefghijklmnopqrstuvwxyz
В отличие от «похожего» решения PHP , это настоящая программа . Программа расшифровывается следующим образом:
После кодирования в восьмеричные значения другой интерпретатор perl вызывается во время выполнения `` (backticks). Обратные метки будут потреблять вывод, поэтому он печатается в STDERR.
Кодировка выполняется с помощью sprintf:
а eval'd-кодировка - это опубликованная программа (в пределах обратных галочек):
С уважением
БВ
источник
Perl 5, 22 символа
(1) содержит только
a
иe
, 10 символов (требуется 5.10+, запустить из командной строки):(2) содержит только «я», 12 символов:
Если не разрешено запускать из командной строки, то вам нужно использовать
use 5.01;say a..z
для первого, по стоимости 7 символов и еще один гласный, но у него по-прежнему нет «i», так что это приводит к действительной записи в общей сложности 29 персонажи.источник
use
, хотя вы можете заменить ее параметром командной строки-M5.01
и сбрить еще два символа.-p
опцией, где 2 символа добавляются к счету. Однако, глядя на этот мета-вопрос, вы сможете использовать-M5.010
бесплатно, если эта опция поможет сократить ваш код.print
заявление,die
чтобы сбрить 2chr 97..z
может быть замененоv97..z
на 3 байта.APL (Дьялог) (
1113)Вам может понадобиться шрифт APL. Это должен быть Unicode, но нет предварительного просмотра ...
Только
U
(и, возможно,⍳
если считать греческие гласные):(Это:
[quad]UCS 96+[iota]26
)Только
A
:источник
U
это гласная ...Python 2, 83
Нет , я , о или у ; 47 :
Нет е ; 36 :
источник
Python 2, 175 символов
Примечание: вывод на печать в отличие от более раннего ответа Python .
Использует 'e', но не a, i, o, u -
63615965(исправить ошибочноеi
перемещение в нижний регистр) 115 символов (избавиться от пробелов).(Первоначально он использовал печать с запятой, которая вставляла пробел; также печатались буквы в верхнем регистре. Теперь рассматривал строгие требования для 'abcdefghijklmnopqrstuvwxyz' в качестве выходных данных; поэтому добавлен оператор импорта).
Не использует 'e' (использует a, i, o, u; может легко избавиться от a, u для небольшого расширения) -
6160 символовисточник
i
, так и должно быть:exec('f%cr x %cn r%cnge(65,91):pr%cnt chr(x),'%(111,105,97,105))
и мы вернулись к 64 символам.exec('fr%cm sys
яmp%crt*\nf%cr
...exec('...')
JavaScript (154)
(1) Только содержит
i
(99 символов):(2) Только содержит
aeou
(55 символов):Демо: http://jsfiddle.net/SvN5n/
источник
$("h\x65\x61d")[0]["\x6fwn\x65rD\x6fc\x75m\x65nt"]["l\x6fc\x61t\x69\x6fn"]="j\x61v\x61scr\x69pt:\x65v\x61l(`f\x6fr(s='',l=65;l<90;l++){s=s+Str\x69ng.fr\x6fmCh\x61rC\x6fd\x65(l);};c\x6fns\x6fl\x65.l\x6fg(s)`)"
208 символов, неaeoui
используется в коде. Работает на браузере Chrome.питон
159117Как упоминалось в другом посте о питоне, самая сложная часть связана с тем, что единственный способ вывода - это использовать
print
илиsys.stdout.write
, оба из которых содержат i. Необходимо сделать это с 2 программами (которые являются автономными и не используют интерактивную оболочку python для создания выходных данных):Этот использует только я для 55 символов:
Этот избегает использования i для 104 символов:
РЕДАКТИРОВАТЬ: Массовый прорыв !!! Я думал, что использование eval (или даже exec) было чем-то вроде обмана и не совсем в духе конкуренции. В любом случае, просматривая встроенные функции, я нашел способ заполучить функцию печати без использования i. Итак, вот программа избежать-i (и o) для 68 символов:
Но так как это также позволяет избежать o, это может быть связано с тем, что позволяет избежать a, e, u для 49 символов:
источник
vars(vars().values()[0]).values()[47]
Рубин
1961644447источник
p
выводит кавычки вокруг алфавита?p x
что эквивалентно вызовуputs str.inspect
, что приводит к кавычкам.$><<
, так что +1 за это и поздравляю; ваша версия намного лучшеРуби, 22
Никаких писем вообще :)
источник
VBA: 76 переборов, 116 без «мошенничества» (98, если на выходе допустимы переводы строки)
Стандартные функции
Благодаря многословности VBA, я не верю, что это можно сделать без 'E' или 'U' в стандартном модуле кода ...
Непосредственные функции
Работая с допущением mellamokb, здесь без объявления функции (опуская
SUB
иFUNCTION
) ( 116 символов , 98 если переводы строки допустимы в выходных данных):Ниже не используются ни «e», ни «a» ( 43 символа , отформатированные для запуска в непосредственном окне):
Ниже не используются ни «i», ни «a», ни «u» ( 33 символа , отформатированные для запуска в непосредственном окне):
Ниже не используются ни «a», ни «o», ни «u» ( 40 символов , отформатированные для запуска в непосредственном окне):
Если в выводе разрешены символы новой строки, приведенные выше примеры могут быть короче:
( 37 символов )
( 27 символов )
( 34 символа )
Грубая сила
Бег с ответом Ruby на w0lf
( 76 символов , отформатированные для запуска в ближайшем окне):
источник
Sub..End Sub
это, поскольку большинство других программ не включают определение функций.Sub
:)print
на,?
так как это работает в непосредственном окне.Ребму : 15 персонажей
Чтение Rebmu всегда требует небольшого размышления, чтобы начать с:
Тогда это помогает расширить аббревиатуры:
Было бы более очевидно использовать символьный литерал для предшественника строчной буквы a:
Но это не «кашу», поэтому преобразование буквального слова в символ проходит с той же целью. Что мне нравится в этом, как и в большинстве Rebmu, так это то, что он имеет дух разумной программы, несмотря на сжатие. (Ответ от Golfscript короче, но не соответствует тому, как программист обычно думает при кодировании.)
источник
<> <(Рыба) - 22 символа
Поскольку <> <использует «o» для печати символа, эта задача кажется невозможной. К счастью, рыба может изменить свой собственный код во время выполнения. Это позволило мне добавить инструкцию печати к коду.
Этот код не использует ни одну из гласных:
Вы можете запустить код здесь
источник