Найкоротший сортований привіт світ


27

Напишіть програму, яка не потребує введення даних та роздруковує Hello, World!стиддут або найближчу альтернативу вашій мові. Зрозуміло, що кожен рядок у вашій програмі повинен містити лише друковані символи ASCII, і він повинен бути в лексикографічному порядку, також відсортований.

Ось усі 95 друкованих символів ASCII в порядку:

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~

Так, наприклад, рядок !!A0~був би недійсним, оскільки Aі 0не в порядку. Рядок !!0A~буде дійсним.

Кожен рядок у вашій програмі може бути будь-якої довжини і може бути будь-яка кількість рядків. Порожні рядки вважаються відсортованими. Кожна з нових рядків у вашій програмі повинна бути однаковою (без змішування \nта \r\n). Вкладки та інші символи ASCII, що не друкуються, заборонені.

Завдяки популярності попиту умова виграшу була змінена:
подання з найменшими рядками виграє. Tiebreaker переходить до найкоротшої програми (нові рядки вважаються окремими символами).

Hello, World!Потрібно виводити лише і необов'язковий останній рядок. Зауважте, що HQ9 + недійсний, оскільки він видає hello, world. Я можу заборонити мови, схожі на HQ9 +, які мають один символ "Привіт, світ!" команди завдяки їхній дрібниці.

Підказка:

Це, безумовно , можливо , в унарний і Lenguage , хоча і не надто стисло.


7
Зараз трохи пізно, але я якось відчуваю, що найменші рядки, то найменші байти, можливо, були б цікавішими ...
Sp3000

6
@ Sp3000 Нам знадобиться комбінований захід, інакше Unary та Lenguage означатимуть, що змагатися можуть лише 1-лайнери.
isaacg

@ Sp3000 Можливо, я просто хотів переконатися, що Unary / Lenguage не виграє. Я готовий змінити це, хоча (вибачте isaacg). Оновіть коментар Sp, якщо ви згодні.
Захоплення Кальвіна

@ Sp3000 Я прийняв вашу пораду. Дивіться оновлення.
Захоплення Кальвіна

Чи можна перевернути замовлення? Наприклад, читання зліва направо?
Ісмаїл Мігель

Відповіді:


17

Навушники , 1 рядок, 366 байт

                                                                        $(((((((((((((((((((((((((((((,000000044888<AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIIIIIIIIIIIILPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPTXXXXXXXXXXXXXXXXXXXXXXXX\```diiiiiilqqqqqqqqtyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy|

Навушники - це тривіальна заміна Brainfuck, де єдине, що має значення, - це модульний код коду 8. Еквівалентний Brainfuck - це просто

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.+++++++++++++++++++++++++++++.+++++++..+++.-------------------------------------------------------------------.------------.+++++++++++++++++++++++++++++++++++++++++++++++++++++++.++++++++++++++++++++++++.+++.------.--------.-------------------------------------------------------------------.

На щастя, цей наївний підхід просто підходить. Існує певний потенціал для гольфу в байтах, але це може бути важко.

Випробувано за допомогою цього інтерпретатора Python .


Генеруючий код

code = "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.+++++++++++++++++++++++++++++.+++++++..+++.-------------------------------------------------------------------.------------.+++++++++++++++++++++++++++++++++++++++++++++++++++++++.++++++++++++++++++++++++.+++.------.--------.-------------------------------------------------------------------."
command_map = "+-<>.,[]"

last_point = 32
out = []

for char in code:
    curr_mod = command_map.index(char)
    last_mod = last_point % 8

    if curr_mod > last_mod:
        last_point += curr_mod - last_mod

    elif curr_mod < last_mod:
        last_point += (8 - last_mod) + curr_mod

    out.append(chr(last_point))

print("".join(out))

Це було розумно! +1
theonlygusti

Чи можете ви скористатися коротшою програмою BF, або програма побудована певним чином? Я спробував свою програму BF, яку я використовував у вашому генераторі, але вихід включав деякий унікод.
mbomb007

1
@ mbomb007 Проблема коротших програм BF полягає в тому, що навіть цей наївний метод закінчується в кодовому пункті 124, тому я не думаю, що достатньо
мізерного простору

30

/// , 7 рядків, 22 байти

/
//Hello
,
 Wor
l
d
!

Рідкісний шанс /// бути конкурентоспроможним (до тих пір, поки ніхто не починає з Unary та Lenguage ...).

Код спочатку стикається з a /і аналізує

/
//

як інструкція щодо заміни, яка видаляє всі нові рядки з залишку програми. Після цього програма просто читається

Hello, World!

яка надрукована дослівно, оскільки не містить подальших косої риски.


19
Я навіть не здогадувався, що URL-адреси можуть містити стільки косих рядків підряд.
Алекс А.

4
@AlexA. Минуло кілька місяців, щоб ця URL-адреса працювала, IIRC. Нам довелося продовжувати перейменувати статтю, щоб розібратися зі змінами в конфігурації сервера та конфігурації MediaWiki.

17

JavaScript (67 66 62 рядки, 227 269 ​​байт)

(Примітка: тестується лише на Firefox 36 та Safari 8, містить незначні функції ES6 ( Setклас))

Z
=
!""+
(0[[]]
+
(
!!""+Set
));c
=Z[~
-22]
$=Z[
3]
$$=Z[
15]
$$$=Z[
24]
$$$$=Z[
1]
$$$$$=Z[
0]
Set
[c
+
$$$+Z[
5]
+Z[
16]
+
$$$$$+
$$$$+Z[
2]
+c
+
$$$$$+
$$$+
$$$$]
(Z[
14]
+
$$+
$+
$$$$+
$$$$$+
"(\
'H\
"+
$+
$$+
$$+
$$$+
",\
 W\
"+
$$$+
$$$$+
$$+Z[
6]
+
"\
!')\
")
()

Код, наведений вище, в основному:

alert("Hello, World!")

Очевидно alert, не сортується. Отже, замість цього нам потрібно генерувати оператор як рядок, і "eval" це:

s = "alert('Hello, World!')";   // generate this using sorted code
eval(s)

Як створити рядок? ES5 підтримує продовження лінії так, що

"AL\
ERT" === "ALERT"

Але код символів \з’являється перед усіма малими літерами, тому нам доведеться генерувати малі літери, використовуючи інші методи.

Тут ми запозичили деяку ідею JSFuck . Малі літери, що беруть участь у застереженнях, є:

t e r a o l d

все це може бути витягнуто з символів стандартних об'єктів, які можуть бути виражені деякою відсортованою послідовністю:

t, e, r ← true      = !""
a, l    ← false     = !!""
o       ← function  = Set
d       ← undefined = 0[[]]

Як ми оцінюємо рядок? Звичайно, ми не можемо використовувати, eval(s)оскільки це не відсортовано. Крім того, ми могли б використовувати Function(s)(), але ми не можемо використовувати, Functionоскільки це також не відсортовано. Однак, Functionце конструктор всіх функцій, що означає Set.constructor === Function.

Якщо додати ідентифікатор, constructorперелік малих літер стає таким:

t e r a o l d c u n s

які, на щастя, ще можуть бути породжені "truefalseundefinedfunction":

t, e, r, u ← true      = !""
a, l, s    ← false     = !!""
o, c, n    ← function  = Set
d          ← undefined = 0[[]]

Після попереднього введення код вище повинен читати так:

// lines 1~8 defines our string containing all lowercase letters we want
Z = true + (undefined + (false + Set))
// Z = "trueundefinedfalsefunction Set() { [native code] }"

// lines 8~20 defines the variables `c`, `$` (e), `$$` (l), `$$$` (o), 
// `$$$$` (r), `$$$$$` (t)
// for the corresponding lowercase letters extracted from `Z`

// the rest calls:
Set["constructor"]("alert('Hello, World')")()
// lines 22~36 generates the "constructor" string
// lines 37~61 generates the "alert('Hello, World')" string

Оновлення: Перейменовано E, L, O, R, Tдо різних повторення , $щоб зменшити 4 лінії.


2
Абсолютно геніально! Я впевнений, не знаю, чи можна використовувати той самий час стратегії в Python (це враховує регістри).
mbomb007

Дуже хороша! Зауважте, що =Z[3*7]можна записати так, =Z[~-22]що потрібен лише один розрив рядка замість двох.
я та мій кіт

@ mbomb007 Так, але пробіли є, і вони першими в наборі ASCII ...
Гаррі Бідл

@meandmycat Дякую! Оновлено.
kennytm

13

Безсоння , 4 рядки, 59 байт

 FFFFGjnnnnooty
FLLddeejkopqyyyyy~~
(<ddjnoppppqrtu
<<Fddfj

Ця програма генерується за рахунок оптимізації для кількості рядків.

10 рядків, 43 байти

(u
pt
(dppty
p~
j
<Fptt{
(otz
?o
FLu
<?FFu~

Ця програма, згадана вище, формується за рахунок оптимізації для кількості байтів.


11

Cygwin bash, 16 рядків, 60 байт

Це працює лише через нечутливе до регістру ім'я файлів у Windows, а також те, що Cygwin шукає регістр утиліти невідчутно, навіть якщо ви не встановите його для розпізнавання регістру шляху без чутливості.

A\
=Hello
A\
+=\
",
"Wor
A\
+=l
A\
+=d
A\
+=\
!
E\
CHO\
 $A

Зверніть увагу ECHOна це наприкінці.


Я не впевнений, що це 17 чи 16 рядків (є новий рядок у самому кінці), але в будь-якому випадку це нічого не виграє.
n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳

Ви виграли 10 версій, це вже багато. Найбільш схвалені (станом на сьогодні) мають 12 оновлень! І /// рішення з 23 оновленнями.
Ісмаїл Мігель

11

> <> , 6 рядків, 111 байт

  """""""/;;Hello
        &\o
      &++\oooo~~
"++++++++\bbbdlr
    +++++\ccccccccfooo}
    $++66\cfffffooooopr

У мене проблеми з гольфом поза зайвою лінією, але в будь-якому випадку я щасливий, що перебив 7-рядовий метод.

Пояснення

> <> - це двоскладна мова на основі стеку, де інструкції є єдиними символами, а потік програми може бути вгору, вниз, вліво або вправо. "Інструкція перемикає рядки синтаксичний, штовхаючи символів до тих пір , закриває "не буде виконано, але з - за природи> <> немає такого поняття , як «багатостроковий рядки синтаксичного аналізу» , як з рядками CJam в або потрійних лапках Python. Це виявилося головною проблемою, тому що починати та закінчувати рядок з a "та мати інші символи між собою (наприклад "some chars") заборонено!

Зауважте, що /і \відображається потік програми, тому ми фактично виконуємо перший рядок, а потім всі рядки у зворотному порядку, а більшість рядків насправді виконується назад!

[Line 1]

""""""              Three empty strings, push nothing
"/;;Hello  "        Push "/;;Hello  ". Note the wrapping - ><> is toroidal!
""""""              Three empty strings, push nothing

[Line 6]
66++$               Turn the top " " into "," by adding 12, then swap top two
rp                  Reverse stack and pop top 3
ooooo               Print "Hello", stack is now " ,"
fffffc              Push some 15s and a 12

[Line 5]
+++++               Sum the 15s and 12 to give 87, or "W"
}ooo                Move "W" to the back and output ", W"
fcccccccc           Push a 15 and some 12s

[Line 4]
++++++++            Sum the 15 and 12s to give 111, or "o"
"rldbbb\++++++++"   Push chars to stack
r                   Reverse stack
ld                  Push length of stack and 13, not used
bbb                 Push three 11s

[Line 3]
++&                 Sum the 11s to give 33, or "!" and put in register
~~                  Pop top two
oooo                Print "orld"

[Line 2]
&                   Put "!" from register to stack
o                   Print "!"

[Line 1]
;                   Terminate

Щодо бічної нотатки, ось забавна спроба найменшого байта (23 рядки, 47 байт):

v
"
!
d
l
r
o
W

,
o
l
l
e
H
"
/<
l
?
!
;
o
\^

2
У другому коді ви можете зберегти 2 байти завдяки вертикальній
обмотці

10

CJam, 5 4 рядки, 162 байти

"Hello
")))))))))))))))))))))))))))))))))))68S\cel
"Wor
")))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))@SX\c|

Така ж кількість рядків, що і Безсоння! (але набагато більше байтів)

Спробуйте в Інтернеті .

Пояснення

"Hello\n"        Push "Hello" and a newline
)                Uncons the newline
)))...)))        Increment the newline into a ","
68S\             Push 68 and a space then swap, leaving 68 on top
c                Convert 68 into a char "D"
el               Lowercase "D" into "d"
"Wor\n"          Push "Wor" and a newline
)                Uncons the newline
)))...)))        Increment the newline into an "l"
@                Rotate top three elements, moving the "d" to the top
SX\              Push a space and 1 then swap, leaving the space on top
c                Convert the space (which is an array) into a char
|                Bitwise or the space (32) with 1 to give "!" (33)    

CJam автоматично друкує стек після цього.

Дякую @Optimizer за те Sc, що SX|він нагадав мені, що це працює, бо в іншому випадку виходить з ладу (це робиться встановлення або замість цього, надаючи масив, що складається з пробілу та 1).


8

> <> (Риба) , 5 рядків, багато байт

Код надзвичайно довгий, коли я кажу [6535529689086686142930090 '+' signs]і [6535529689086686142930090 'd' characters]в першому рядку коду, я маю на увазі, що є буквально 6535529689086686142930090плюс знаки в ряд!

(І для наступних рядків додайте необхідні пробіли.)

'[6535529689086686142930090 '+' signs]^`[6535529689086686142930090 'd' characters]
                                   **,/288
                                     -/:o
                             %**288:;?\
                                   (1:\

Коротша перевірена альтернатива, яка друкує лише Hi:

'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++^`hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
                                                                                                                               **,/288
                                                                                                                                 -/:o
                                                                                                                         %**288:;?\
                                                                                                                               (1:\

Спосіб:

  • У першому рядку ми створюємо величезну кількість, що представляє рядок у base128.
  • В решті рядків (йде знизу вгору) ми друкуємо наступний символ у кожному циклі, поки значення цілого числа не досягне 0.
  • Цикл циклу є :1(?;:882**%:o-288**,.

(За допомогою цього методу ми можемо надрукувати довільну рядок 2+ символів.)


Неправильне рішення; 6535529689086686142930090 не замовлено.
theonlygusti

@theonlygusti "Код надзвичайно довгий, інтерпретується [6535529689086686142930090 '+' signs]і [6535529689086686142930090 'd' characters]буквально знаходиться в першому рядку коду." (Якщо незрозуміло, що я маю на увазі під цим, перевірте другий фрагмент коду.)
randomra

О, гаразд! Вибачте, нерозумно: ПІ сприйняв це буквально.
theonlygusti

2
Розмір - 13 YB, приблизно в 1000 разів перевищує розмір Інтернету.
Чарльз

@Charles я отримую ~ 40YB, включаючи останні рядки.
Ведрак

8

PHP (7/17 рядків, 36/59 байт):

Через суму недійсної відповіді я переписав цю відповідь.

Версія браузера? Пропав.

Але у мене є 2 рішення, обидва засновані на розрядних xor( ^) рядках у PHP.

Це надзвичайно потужне рішення! Іноді це дозволяє зберегти велику кількість байтів.

По-перше, найкоротша відповідь:

Echo
Hello
,AM^mm
,Wor
,OOO^
"#+n
";

Я знаю, це виглядає жахливо, але це працює!

Наступний залежить від нових рядків.

Так, він використовує нові рядки ( \nпотрібен / стиль UNIX)!

Echo
Bo
.ff
.e
.
"&*]ex
fn
"^
"\n
\n
\n
\n
\n
\n
\n
",B^c
;

Нові рядки на цьому потрібні для роботи.

Це не ідеально, але працює!


Обидва відповіді були засновані на @ MartinBüttner «s рішення :

Echo
Hello
.
chr
(44
).
chr
(29
+3
).Wor
.l
.d
."!
";

Особлива подяка @ n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳ , @CJDennis , @ MartinBüttner та @skagedal за виявлення всіх моїх помилок та за їхні пропозиції.


1
Вихід у браузері є Hello , Wor l d !. Зверніть увагу на додаткові місця! На жаль, це неправдива відповідь.
CJ Dennis

1
Тестовано в Firefox 36, IE 8, Opera 12.17 та Opera 28 (Chromium) на Windows XP. Всі виводили вихід однаково. Оскільки будь-яка кількість символів пробілу відображається як один пробіл (не забороняючи пробілу тощо), кожен новий рядок перетворюється на пробіл. Мені буде цікаво дізнатися, чи будь-який браузер надає ваш вихід без пробілів!
CJ Dennis

1
Приємне зловживання мовою! Оскільки помилки, які він генерує технічно, переходять на stderr, а не stdout, ваш код тепер дійсний, хоча в моєму випадку я бачу багато помилок у своєму браузері! І, що дуже неймовірне, у моїй програмі PHP немає коротких тегів, тому перший рядок на моєму комп’ютері <?phpє недійсним! Однак я пробачу вам за це! Гаразд, я просто перевірив, <?Phpщо працює, тому я щойно дізнався, що стартовий тег нечутливий до регістру!
CJ Dennis

1
Два найкращі рішення у цій відповіді не відповідають правилам. У верхній частині, як і рядок 8,. "!<br- це не відсортовано. Другий має як рядок 10: ."!- не відсортований.
skagedal

1
@IsmaelMiguel Вибачте, але ні. Рядок 7 першої пропозиції не відсортований. Рядки 5 і 7 другої пропозиції не сортуються.
skagedal

7

Pyth, 7 рядків, 23 байти

-
"Hello
,
 Wor
l
d
!"b

Досить просто, просто використовуйте багаторядковий рядок і видаліть нові рядки.

Спробуйте тут.


@orlp Я додав рядкові рядки кілька днів тому, і Pyth підтримував нові рядки у введенні протягом століть. При цьому взагалі не використовується багаторядковий режим. Спробуйте це на онлайн-компіляторі, який точно не має багаторядкового режиму.
isaacg

2
Його майже те саме в CJam, з таким самим числом байтів.
Оптимізатор

4

По-четверте, 41 рядок, 143 байти

Спробуйте в Інтернеті.

Я дуже пишаюся цим. Я вирвав це досить швидко, як тільки виявив, що можу це зробити, Google шукав нечутливі до регістру мови, і я вже добре знаю Forth. Його можна майже напевно скоротити, як байти, так і рядки. Пропозиції високо оцінені. : D

Ця програма, по суті, виштовхує десяткове значення кожного символу ASCII, після чого друкує кожне. Я намагався оптимізувати, поки писав це, отже, він менш читабельний, ніж я хотів би.

33
99
1
+
DUp
8
+
2DUp
6
+
SWap
11
+
2OVer
SWap
8
9
*
EMit
1
+
EMit
DUp
DUp
EMit
EMit
3
+
EMit
29
3
2DUp
+
EMit
*
EMit
EMit
EMit
EMit
EMit
EMit

Ці Emitлінії не працюють, тому що i(105) менше , ніж m(109).
bcsb1001

То має бути "Еміт"?
skagedal

4

Marbelous, 9 рядків, 94 байти

3333
    @ADD
    358C
++--29\\
++--3555DE
<<<<<<>>~~
+++++446666D
++++++++../\
      ++------

Тестуйте його онлайн тут. Using spaces for blank cellsнеобхідно перевірити.

Візуальне представлення джерела:

Візуальне представлення вищезазначеного джерела

Пояснення: Кожне шістнадцяткове значення у цій програмі переміщує вниз кожну «галочку» (якщо вона не включена \\; у цьому випадку вона рухається праворуч). ++збільшить значення, --декремент, ~~побіжно не застосовуватиметься і т. д. Значення, що падають на дно, друкуються як символ ASCII.

Наприклад: 33у верхньому куті стає (((0x33 +1 +1) << 1) +1 +1 = 0x6C (l).



2

Rebol - 15 рядків (51 байт)

PRin
AJOin
[
'Hello
Sp 
+
12
Sp
'Wor
'l
'd
Sp
+
1
]

Слова в Rebol нечутливі до регістру (наприклад PRINT, Printі printвсі називають одну і ту ж функцію).

Наведений вище код прибрано:

prin ajoin [
    'Hello  sp + 12  sp  'Wor  'l  'd  sp + 1
]

NB. spповертає пробіл !


Ваша програма недійсна, вона {не може бути перед будь-якими літерами.
theonlygusti

@theonlygusti - виправлено (пішло від 9 рядків до 13). Єдиний рядок, який викликав у мене проблему, був {,}. Це зараз Sp + 12(понад 3 рядки), що еквівалентно символу пробілу + 12 (тобто кома)
draegtun

2

Одинарний , 1 рядок, багато байтів

Кожен персонаж у цій програмі є 0. Джерело занадто довге, щоб вводити сюди, але воно складається з рядка з багатьох нулів:

327380789025192647555922325233404088310881092761595127419003295178342329930050528932118548

Це десяткове представлення для цього двійкового числа:

0b1010010010010010010010010110000010010010010110000010010000010010010000010010010000010001001001001011111000010000010000011110001111001011111000000100000011011011100010010010010010010010100100010010010100000000100001011100001100010010010100011011011011011011100011011011011011011011011100000000010100

Що було створено з цієї програми BrainF ***:

++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>-[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.

Подивіться, як я його створив: http://ideone.com/lMT40p


2

Пакетна - 39 рядків (202 байти)

Я хотів зменшити розмір, включивши затримку розширення, запустивши код всередині cmdдзвінка за допомогою /v onкомутатора, але не міг пройти всі карати.

@S^
ET^
LO^
C^
AL^
 EN^
ABL^
E^
DEL^
AY^
E^
DEX^
P^
ANS^
IO^
N
@S^
ET^
 0=Hello
@S^
ET^
 1=^
,^
 Wor
@S^
ET^
 2=l
@S^
ET^
 3=d
@E^
CHO^
 !^
0^
!!1^
!!2^
!!3^
!^^^
!

Без нових рядків (і карат для виходу з нових рядків):

@SETLOCAL ENABLEDELAYEDEXPANSION
@SET 0=Hello
@SET 1=, Wor
@SET 2=l
@SET 3=d
@ECHO !0!!1!!2!!3!^^!

1

Рубін, 19 рядків, 95 байт

$;=
$>
$;<<
:Hello
$;<<
44::chr
$.=
33::
-1
$;<<
$.::chr
$;<<
:Wor
$;<<
:l
$;<<
:d
$;<<
33::chr

Можливо, друге найскладніше обмеження коду для Рубі, яке я бачив на цьому сайті, після жахливості тут .

Редагувати для пояснення: Єдиним сортованим <<методом Ruby є метод STDOUT. На жаль, константа для STDOUT є $>і >є вище ASCII, ніж більшість символів, тому назвати метод на ній реально неможливо. Нам потрібен оператор присвоєння багато рядків, щоб перетворити його на більш простежувану назву змінної $;(крапка з комою все ще досить висока, але більшість змінних цієї форми або не призначаються, або можуть бути лише рядками).

Символи ( :Worі т. Д.) - це найпростіший спосіб зробити буквальний, і я не бачу способу позбавити нові рядки з рядка, тому мені потрібно кілька операцій друку. Пробіл та пунктуація не можуть перейти в символ буквально, але, на щастя, chrметод на числах є законним, тому я можу отримати символ із його значення ASCII. ::- це альтернативний спосіб виклику методів. Пробіл складний, тому що я не можу писати 32, тому я віднімаю 1 з 33 і присвоюю йому змінну.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.