Ответ на главный вопрос жизни, вселенной и всего такого


46

задача

Если в качестве входных данных используется строка String, ваша задача состоит в том, чтобы вывести ее 42 только в том случае, если входная строка String оказывается точно следующей:

abbcccddddeeeeeffffffggggggghhhhhhhhiiiiiiiiijjjjjjjjjjkkkkkkkkkkkllllllllllllmmmmmmmmmmmmmnnnnnnnnnnnnnnoooooooooooooooppppppppppppppppqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrsssssssssssssssssssttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzz

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


Критерий победы

Это , поэтому выигрывает самый короткий код в байтах!


Многие из представленных здесь решений неверны, потому что они печатают 42, когда строка длиннее, чем желаемая строка, а префикс совпадает с желаемой строкой.
fR0DDY

@froddy: Что делать, если только символы? после строки (is | are) разрыв строки? Мой обычный механизм ввода не заботится о том, завершается ли ввод разрывом строки или нет, но, к примеру, выдает одинаковое в обоих случаях.
Джои

@ fR0DDY: не было четкого определения того, как следует обрабатывать остальную часть ввода, поэтому здесь нет «неправильных».
PatrickvL

3
@PatrickvL В нем упоминается «только», если вход является заданной строкой. Так abbcccddddeeeee...zzabcчто не удовлетворяет, что я полагаю, и я вижу некоторые программы, которые дают да на этом входе.
fR0DDY

2
@ fR0DDY: Позвольте мне выразить это по-другому: нет никакой спецификации о том, как разделить входные данные, так что это открыто для интерпретации. Также нет упоминания о кодировке символов (я полагаю, что большинство из нас предполагают, что по умолчанию их среда - ANSI, UTF8 и UTF16LE будут самыми популярными). Также не упоминается, как представлен ввод - вводится ли он через стандартный ввод через параметр командной строки? Итак, вы видите - наличие всей этой свободы уступает некоторой интерпретации, которую вы бы назвали «неправильной», в то время как другие посчитали бы ее «соответствующей». НОФИ, но это ежедневная практика для некоторых из нас.
PatrickvL

Ответы:


20

Гольфскрипт, 20

26,{.97+\{.}*}%=42`*

с новой линией, 21 символ (Nabb)

26,{).[96+]*}%n+=42`*

На самом деле Nabb побил мой, вот оригинальное решение с новой линией, 22 символа

26,{.97+\{.}*}%n+=42`*

Это просто генерирование исходной строки и сравнение ее со строкой из стандартного ввода.


3
26,{).[96+]*}%n+=42`*за 21 (включая новую строку).
Набб

Хех, это не работает без, n+потому что массив не плоский. Вам придется либо оставить свои исходные 20 символов, либо добавить a, ~чтобы сгладить внутренние члены массива.
Набб

@Nabb, хе-хе, я не понимал, что новая строка сделала его другим.
ВЫ

13

Рубин 1.9, 46 42 39 персонажей

p (?a..?z).map{|a|a*$.+=1}*""==gets&&42

Предполагается, что ввод не заканчивается новой строкой.


Как насчет перевода строки из get?
Steenslag

2
@steenslag: спецификации ничего не говорят о том, что ввод завершается символом новой строки, поэтому в этом решении предполагается, что его нет.
Вентеро

11

Программа C - 78 89

Редактировать: не печатать 42, когда есть дополнительные символы.

Предполагается, что ввод не имеет завершающей строки.

main(i,j){for(i=1;i<27;i++)for(j=i;j--;getchar()==96+i?0:exit(1));puts("42"+!!gets(&i));}

Если префикс не совпадает, программа завершается. Если префикс совпадает, но имеется 1-3 или около того лишних символов, выдается 2. В противном случае происходит неопределенное поведение.

Это можно сделать на один символ короче, изменив exit(1)на fork(). Да, и на несвязанной заметке не забудьте сохранить все открытые документы на случай, если по какой-либо причине ваша система заблокируется.


1
Это напечатает 42, если строка длиннее, чем желаемая строка, и префикс совпадает с желаемой строкой.
fR0DDY

8

PHP (60)

Предполагая ввод данных в командной строке:

for(;$i<702;)$s.=chr(96.5+sqrt($i+=2));echo$s!=$argv[1]?:42;

Объяснение : вы можете просмотреть строку в виде структуры треугольника.

j     i   val
0     0   a
1   1-2   bb
2   3-5   ccc
3   6-9   dddd
4 10-14   eeeee
5 15-20   ffffff
      ...

Строка jначинается с индекса i = j*(j+1)/2(это формула треугольного числа). Решение квадратного уравнения приводит к тому, что индекс iнаходится на линии j = int((sqrt(8*i+1)-1)/2)и, следовательно, содержит символ 97 + int((sqrt(8*i+1)-1)/2). 0-350Диапазон индексов не позволяет упростить что 96.5 + sqrt(2*(i+1)), но это больше не справедливо для больших значений.

Изменить : переключен на ввод командной строки, как предлагается в комментариях.
Редактировать : использует условный оператор для сохранения символа


+1, это работает;) Ммм, не могли бы вы пояснить, как это $s.=chr(96.5+sqrt($i+=2));работает?
Клайд Лобо

Ред. Я надеюсь, что это имеет смысл :-)
Сэм Hocevar

для (; $ я <702;) $ s = CHR (96,5 + SQRT ($ I + = 2));. эха ($ s == $ ARGV [1]) * 42; Всего 61 символ, при условии ввода stdin
Viper_Sb

@Viper_Sb: спасибо за подсказку; Я не был уверен в правилах, поэтому подражал решению Клайда. Я пойду с вашим предложением.
Сэм Хочевар

1
@powtac синтаксис языка здесь не требует пробела
Сэм Хочевар,

7

Perl, 35 43

map$s.=$_ x++$a,a..z;say 42if<>~~$s

Требуется Perl 5.10 или более поздняя версия (работает с -E), нет новой строки при вводе.

Мне больше понравилось мое регулярное выражение побочных эффектов, но более короткий код произнес. Вот это как сувенир. Также предназначен для Perl 5.10 или новее, но только для расширенных / экспериментальных функций регулярных выражений, поэтому требуется только pопция командной строки.

$a=a;$_=/^(??{$b++;$a++."{$b}"}){26}$/&&42

Отлично. Я изо всех сил старался победить это рекурсивное регулярное выражение, но не смог опуститься ниже 43c. : - ((
резиновые сапоги

Почему нужно говорить, $a++."{$b}"а не просто $a++.$b?
Тимви

@Timwi, потому что мне нужны эти скобки, чтобы они появились в полученной строке. Я не хочу совпадать с литералом "d4", я хочу "dddd", выраженный в виде регулярного выражения "d {4}"
JB

Конечно. Спасибо за объяснение!
Тимви

Придумали 33-байтовое решение для этого! Попробуйте онлайн!
Дом Гастингс

7

05AB1E , 7 байтов (не конкурирует)

AƶJQi42

Попробуйте онлайн!

объяснение

A       push lowercase alphabet
 ƶ      lift every letter, push it and multiply it by its index
  J     join the list
   Qi   does it equal the input?
     42 push 42 and output implicitly

Просто пройти через некоторые испытания, чтобы выучить 05AB1E (и играть в гольф в целом). Этот вызов был отмечен как активный вчера, и я нашел короткое решение, так почему бы не поделиться? :)


3
Добро пожаловать в PPCG!
Steadybox

6

Программа на Haskell - 71 67 64 57

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

f x|x==[c|c<-['a'..'z'],_<-['a'..c]]="42"
main=interact f

Использование:

$ echo -n 'abbcccddddeeeeeffffffggggggghhhhhhhhiiiiiiiiijjjjjjjjjjkkkkkkkkkkkllllllllllllmmmmmmmmmmmmmnnnnnnnnnnnnnnoooooooooooooooppppppppppppppppqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrsssssssssssssssssssttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzz' | { ./42; echo; }
42
$ echo -n 'something else' | { ./42; echo; }
42: 42.hs:1:0-54: Non-exhaustive patterns in function f


$

1
Между прочим, этот код также все еще очень читабелен.
Дэн Бертон,

1
С zipWithостановками , когда она достигает конца короткого списка, вы можете заменить ['a'..'z']с ['a'..]и сохранить 3 -х символов.
Хаммар

@ Хаммар: Спасибо. Я сохранил еще 1 символ, используя >> = (concatMap) вместо concat и zipWith.
Джои Адамс

@hammar: еще больше сэкономлено благодаря использованию нотации do вместо >> = и лямбды :-)
Джои Адамс,

2
@Joey: Или еще лучше:[c|c<-['a'..'z'],_<-['a'..c]]
Хаммар

4

J, 29

f=:42#~((>:#a.{~97+])i.26)-:]

пример:

f 'oasijfiojasef'

f 23841235

f 'abbccc...'
42

Мне нравится Дж. И я нахожу это уродливым и ужасным. И мне нравится это.
Seequ

4

D: 94 персонажа

void f(S)(S s){S t;foreach(i;0..26)t~=array(repeat(cast(char)(i+'a'),i+1));s==t&&writeln(42);}

Более разборчиво:

void f(S)(S s)
{
    S t;

    foreach(i; 0 .. 26)
        t ~= array(repeat(cast(char)(i + 'a'), i + 1));

    s == t && writeln(42);
}

3

Дельфы, 164 132

Этот строит строку и просто сравнивает ее с первым аргументом командной строки. Это короче и менее сложно, чем моя другая заявка:

var s:string;c,i:int8;begin repeat s:=s+Char(c+97);i:=i-1;c:=c+Ord(i<0);if i<0then i:=c;until c=26;Write(42*Ord(s=ParamStr(1)));end.

(Обратите внимание, что эта версия предполагает , что cи iпеременные начинают инициализируется в 0, как в случае в моей версии Delphi (2010).)

Как и в моем другом представлении, для этого требуется меньше символов, если построение строк не происходит в функции, как я делал раньше:

Дельфы, 181

program a;{$APPTYPE CONSOLE}function s(c,i:byte):string;begin if(i>0)then Exit(Char(c)+s(c,i-1));if(c<122)then Exit(s(c+1,c-95));end;begin if(s(97,1)=ParamStr(1))then Write(42);end.

Обратите внимание, что вывод не нуждается в новой строке, поэтому WriteLn () стал Write ().


3

PHP - 45 символов

Я удивлен, что никто не отправил ответ, который использовал хеширование. Это очень эффективный способ проверки точной строки.

echo md5($argv[1],1)!='¯è a@ÛÚƒ:ïT�p'?:42;

Данные довольно сложно скопировать / вставить, поскольку в середине кода находится нулевой байт. Вот шестнадцатеричный дамп кода для тестирования.

65 63 68 6f 20 6d 64 35 28 24 61 72 67 76 5b 31 5d 2c 31 29 21 3d 27 af e8 a0 61 40 дБ да 7f 11 0f 83 3a ef 54 00 70 27 3f 3a 34 32 3b


2
Умная! Хотя технически существуют другие входные значения, дающие такой же хэш, он не вполне удовлетворяет требованию вывода 42, только если вход имеет заданный формат.
mellamokb


3

Pyth, 14

*42qzsm*dhxGdG

Просто строит необходимую строку, затем сравнивает с вводом и умножает на 42.


'сравнивает с входными данными и умножает на 42.' никогда бы не подумал об этом сам. Вы просто помогаете мне сбрить 1 символ из моего решения. Благодарю.
AndoDaan

Я пришел слишком поздно. Можете ли вы объяснить, как это работает? Функция mдоставляет мне неприятности…
Джим

1
@Jim Начнем с функции карты m, которая применяет функцию к каждому элементу своего ввода. Ввод G, алфавит. xGdнаходит положение d, символ в алфавите, в Gалфавите. hувеличивает это на единицу и *dповторяет персонажа столько раз. Вне mфункции sобъединяет результирующий список строк в одну строку, а затем qzпроверяет, равен ли результат вводу. Логические значения представляются как 0будто False и 1если true, так *42что в результате получается значение 42if True и 0if False.
Исаак

3

Brachylog (2), 15 байт, языковые проблемы

⊇Ạ∧?o?ọtᵐ~⟦₁+₁₆

Попробуйте онлайн!

А теперь ответ, который работает по совершенно другому принципу, который можно увидеть здесь. Это отправка функции (вопрос не указывает, какой тип представления желателен, но функции разрешены по умолчанию).

объяснение

Этот ответ работает путем определения своего рода строки: те, которые а) содержат все строчные буквы алфавита, б) расположены в отсортированном порядке, и в) для которых взятие количества вхождений каждого символа в строке дает последовательность последовательных целые числа, начинающиеся с 1. (Должно быть ясно, что таких строк много, но та, которую мы хотим выделить в специальном случае, является самой короткой.) Затем, если строка удовлетворяет этим критериям, мы добавляем 16 к числу различных символов в строка; это даст 42, если строка - та, которую вопрос задает нам в особом случае, и по крайней мере 43 во всех других случаях. (Если строка не соответствует ни одному из критериев, относящихся к категории, функция завершится с ошибкой, что похоже на создание исключения.)

Вот как интерпретировать исходный код:

⊇Ạ∧?o?ọtᵐ~⟦₁+₁₆
⊇Ạ               {the input} contains all lowercase letters
  ∧              and
   ?o?           the input sorts to itself
                 {and; implied when two conditions overlap}
     ?ọ          the {character, number of occurrences} pairs for the input
       tᵐ        when the second element of each is taken
         ~       create an output that could have been produced by
          ⟦₁     outputting the list of integers from 1 to some input inclusive;
            +₁₆  add 16 to that input {and output it}

3

Р, 60 58

if(readline()==paste0(rep(letters,1:26),collapse=""))cat(42)

if(scan(,"")==paste(rep(letters,1:26),collapse=""))cat(42)

Спасибо за предложение @giusppe


Я думаю, что pasteздесь все в порядке, и вы можете использовать scan(,"")вместо readline().
Джузеппе

2

Python (84)

Предполагается завершающий перевод строки в конце ввода.

импорт системы
if ''. join (c * chr (c + 96) для c в диапазоне (27)) + '\ n' == sys.stdin.read (): print 42

1
Почему бы не использовать raw_inputвместо этого sys.stdin.read?
Хуан,

1
@Juan: raw_inputчитает только одну строку; Я не был уверен, будет ли «вход» всегда одной строкой или возможен ли дисквалифицирующий ввод в последующих строках.
Hoa Long Tam

2

Python - 62 символа

print("".join(x*chr(x+96) for x in range(27))==raw_input())*42

2
Может быть короче в Python 3: print("".join(x*chr(x+96)for x in range(27))==input())*42.
mbomb007

2

Perl, 49 46 символов

для использования в программе, а не в командной строке

$..=chr($+96)x$ for 1..26;$.eq(pop)&&print '42'

join('',map$_ x++$x,'a'..'z')eq pop&&print'42'

С уважением

БВ

Редактировать: идея сорвана с Ventero


2

PHP 92 88 87 символов

function _($a){for($i=97;$i<123;$i++)for($j=$i-96;$j;$j--)$b.=chr($i);echo($b==$a)*42;}

РЕДАКТИРОВАТЬ

Заменены $j<0с $jи return $b==$a?42:0;сecho $b==$a?42:0;

Заменено echo $b==$a?42:0;наecho($b==$a)*42;


2
Может быть 80 символов, если бы не все чертовы знаки доллара.
Джои Адамс

Также см. Мою запись для решения с одной петлей.
Сам Хочевар

2

Эклипс Пролог - 173

c(_,[],_):-!. c(A,M,N):-length(L,N),checklist('='(A),L),append(F,L,M),P is N-1,B is A-1,c(B,F,P). ?- read_string(end_of_file,351,S),string_list(S,L),c(122,L,26),writeln(42).

2

JavaScript (91 93 94 98 102 116 )

Использование:, a('string')возвращает, 42если действует в соответствии со спецификацией, или 0.

function a(z){for(i=r='';i++<26;)for(j=i;j--;)r+=String.fromCharCode(i+96);return(z==r)*42}

http://jsfiddle.net/g25M3/6/

Редактировать : удалены varи исключены два пробела в for (.

Изменить 2 : изменено j>0на jи

  1. return (z==r)?42:0; в
  2. return z==r?42:0

Редактировать 3 : Инициализировать iс i='', изменить

  1. (z==r)?42:0 в
  2. (z==r)*42

Изменить 4 : Изменить

  1. for(;i<27;i++) в
  2. while(i++<26)

Изменить 5 : Изменить

  1. i=r='';while(i++<26) в
  2. for(i=r='';i++<26;) а также
  3. for(j=i;j;j--) в
  4. for(j=i;j--;)

Ну, вы можете уменьшить еще 12 символов, если вы не используете varдля объявления переменных;)
Clyde Lobo

@Clyde: спасибо! Также обнаружил, что я мог бы удалить пространство между for (.
mellamokb

Да, собирался предложить то же самое;) О, и я закодировал решение на PHP, используя ту же логику, что и у вас
Клайд Лобо,

Вы можете сохранить еще 2 символа, заменив return(z==r)?42:0;наreturn z==r?42:0
Клайд Лобо

j>0может быть просто jя думаю.
ВЫ

2

JavaScript 1,8, 99 символов

function c(x)(x.replace(/([a-z])\1*/g,function(m)!(a-m.length)*m.charCodeAt(0)-96-a++,a=1)==0)*a+15

Смею вас в этом разобраться :)


2

PHP - 59

Предполагается, что по крайней мере 1 вход предоставляется по кли

echo md5($argv[1])!='afe8a06140dbda7f110f833aef540070'?:42;

Это более или менее работает, за исключением того, что md5 технически может иметь дубликаты с алгоритмом хеширования.


2

PowerShell v2 +, 47 байт

42*(-join(1..26|%{,[char]($_+96)*$_})-ceq$args)

Создает диапазон 1..26, передает это через цикл с |%{...}. На каждой итерации мы используем оператор запятой для построения массива литерала текущего, [char]умноженного на текущий номер цикла. Затем мы -joinвсе вместе строим строку, abbcccdddd...а затем используем -ceqсравнение с учетом регистра для нашего ввода $args, что приведет либо к, $TRUEлибо к $FALSE. В PowerShell логические значения можно неявно приводить как 1или 0, соответственно, что здесь происходит с 42*. Распечатает, 42если ввод abbccc...zzzzzzzzzzzzzzzzzzzzzzzzzzи будет выводить 0иначе.


Вы можете сохранить байт :) Попробуйте онлайн!
Маззи

2

К, 26 байт

{(::;42)x~,/(1+!26)#'.Q.a}
{(::;42)x~,/(1+!26)#'.Q.a}"hello"
{(::;42)x~,/(1+!26)#'.Q.a}"abbcccddddeeeeeffffffggggggghhhhhhhhiiiiiiiiijjjjjjjjjjkkkkkkkkkkkllllllllllllmmmmmmmmmmmmmnnnnnnnnnnnnnnoooooooooooooooppppppppppppppppqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrsssssssssssssssssssttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzz"
42

Спасибо


{$[x~.Q.a@&1+!26;42;]}для 22 байтов.
streetster

1
42*(&!27)~-96+"j"$на 18 байт (портируя мой ок ответ).
Стритстер

2

VBA 91

Там не было никаких ответов VBA, но это работает:

Function f(t)
    For i = 1 To 26
        o = o & String(i, Chr(i + 96))
    Next
    f = -42 * (t = o)
End Function

Действительно ли невозможно удалить пробелы из этого?
Esolanging Fruit

1
Сокращенная версия, 61 байт -o="":For i=1To 26:o=o &String(i,Chr(i+96)):Next:?-42*([A1]=o)
Тейлор Скотт

@ Challenger5 Нет, это не невозможно. Комментарий Скотта Тейлора именно такой. Он запускается в Immediate Window и принимает значение из ячейки в A1качестве входных данных.
Инженер Тост

2

APL (Dyalog) , 18 17 байтов

42/⍨⍞≡819⌶⎕A/⍨⍳26

Попробуйте онлайн!

Четыре очевидных байта могут быть сохранены, если нам разрешено использовать верхний регистр.

42 42

/⍨ если (лит. воспроизведено)

 ввод символов

 идентично

819⌶ в нижнем регистре

⎕Alphabet

/⍨ тиражируется

 один через

26 26


1

Clojure - 61 символ

(fn[a](if(=(mapcat #(repeat%(char(+% 96)))(range 1 27))a)42))

Эксплуатирует следующие факты:

  • Clojure может автоматически интерпретировать любую строку как последовательность символов
  • Я могу использовать диапазон чисел от 1 до 26, чтобы создать символы и повторить их правильное число или количество раз, чтобы сгенерировать «правильный» ввод

сэкономил бы 6 символов, если бы Clojure позволял вложенным # () s ..... запрос важной функции для Clojure 1.4 Я думаю!
Микера

1

Javascript 144

Вероятно, может быть значительно улучшено, рекурсия всегда была для меня головой далеко.

Сжатый

function r(a,b,d,c){c++;if(b<d)a+=r(a,b+1,d,c);for(i=0;i<c;i++)a=String.fromCharCode(b)+a;return a}function q(a){if(q==r(a,97,122,0))return 42};

Менее сжатый

function r(s, c, x, w){        
    w++;
    if(c < x)
        s += r(s, c + 1, x, w);
    for(i = 0; i < w; i++)
        s = String.fromCharCode(c) + s;              
    return s;
}
function q(z){
    if(q==r(z,97, 122, 0))
        return 42;            
}

alert(q("rgrg"));

1

Дельфы, 127

var b:Char;c,i:Int8;begin repeat if i<0then i:=c;Read(b);if c+97<>Ord(b)then Exit;i:=i-1;c:=c+Ord(i<0)until i=27;Write(42);end.

Этот читает строку из ввода, сравнивает ее по ходу, записывает 42, когда ввод совпадает до последнего z.

Дельфы, 157

var b:pchar;c,i:byte;begin b:=CmdLine+85;c:=97;i:=1;repeat Inc(b);if b^<>Char(c)then Exit;Dec(i);if i>0then Continue;c:=c+1;i:=c-96;until i=27;Write(42);end.

Дельфы, 188

program a;{$APPTYPE CONSOLE}var b:pchar;c,i:byte;begin b:=CmdLine+85;c:=97;i:=1;repeat Inc(b);if(b^<>Char(c))then Exit;Dec(i);if(i>0)then Continue;c:=c+1;i:=c-96;until(i=27);Write(42);end.

Эта версия не использует функцию, которая сохраняет довольно много символов по сравнению с предыдущей версией этой техники:

Дельфы, 213

program a;{$APPTYPE CONSOLE}function t(b:pchar;c,i:byte):byte;begin repeat Inc(b);if(b^<>Char(c))then Exit(0);Dec(i);if(i>0)then Continue;c:=c+1;i:=c-96;until(i=27);t:=42;end;begin WriteLn(t(CmdLine+77,97,1));end.

Увы, он немного длинный, в основном из-за длинных ключевых слов Delphi и необходимости инициализировать консольные приложения, прежде чем они смогут записать вывод.

Также обратите внимание, что я увеличил CmdLine на 77 символов, так как это было смещение, которое мне нужно было пропустить через мой локальный путь к исполняемому файлу (Delphi не имеет прямого указателя аргумента). Настройте в соответствии с вашими настройками (может привести к уменьшению на 1 символ при смещении <10).


Вы можете установить тип приложения в ProjectOptions / DelphiCompiler / Linking / GenerateConsoleApplication. Также вы можете опустить program a;строку. И скобки вокруг b^<>Char(c), i>0и i=27их можно снять.
Ваутер ван Нифтерик

@Wouter van Nifterick: Спасибо за предложения, я буду применять их и к другим моим предложениям. (Я даже не знал, if i>0thenбудет компилировать!)
PatrickvL
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.