404 - Уникальная страница 404 не найдена

26

Вдохновлен полиглотом на странице Stack Overflow 404 :

Цель

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

ограничения

Вот поворот, есть ограничение, чтобы сделать это сложнее:

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

Подсчет очков:

  • Первым критерием определения победителя является количество языков, на которых работает основная программа.
  • Второй критерий - количество байтов, где программы с большим количеством языков имеют большее значение для этого критерия.
  • Третий и последний критерий - время подачи

Разъяснения:

Исходные коды программ не должны иметь никакого отношения. Они запускаются как отдельные программы. Любая из программ может выводить завершающий и / или начальный пробел. ПРОГРАММЫ НЕ ДОЛЖНЫ БЫТЬ ПОСЛЕДСТВИЯМ КАЖДОГО ДРУГОГО!

Спасибо @MartinEnder за лучшее объяснение!

Zachary
источник
4
Вы думаете, кто-нибудь собирается получить 404 языка?
Джо Кинг
1
@JoKing Это было бы больше, чем нынешние проблемы «добавить язык в полиглот», так что, вероятно, нет ...
Esolanging Fruit
1
«Исходный код подпрограмм не обязательно должен иметь какое-либо отношение», но каждая из них должна быть подпоследовательностью полной (байтовой) программы, которая работает на всех N языках, верно? Если нет, то не могли бы вы определить «подпрограмму»?
Джонатан Аллан
1
+1 только потому, что теперь я знаю, что это за хрень. Я просто проигнорировал это раньше. О нет, этого нельзя не заметить сейчас!
Сергей
1
@ Захари, почему это? Они печатают 404. Если конечный пробел в порядке, я думаю, что все должно быть в порядке.
MD XF

Ответы:

27

54 языка, 1331 байт

> <> , Gol> <> , Foo , Befunge-93 , Befunge-98 , brainfuck , Brain-Flak , Python 2 , Python 3 , гексагония , Perl , Ruby , Юлия , кардинал , Brainbash , Turtlèd , Deadfish ~ , Whitespace , Брайль , Рейл , Деление , ЭТА , Триггер , Самоизменяющийся Brainfuck , Numberwang , На самом деле , Emoji , Символический Brainfuck , TinCan , Alphuck , Shove , Cood , Wise , Width , Whispers , Thue , Surface , Stones , evil , Set , Prelude , Gaot ++ , Cubix , Cubically , PATH , Commercial , Брайан и Чак, Обезьяны , Nhohnhehr , Beam , AsciiDots , Alumin , Алиса , Вихрь

Это становится очень длинным, поэтому по предложению @ MDXF я перенесу подпрограммы и комментарии в суть . Программа здесь является только окончательной программой. Еще раз спасибо MDXF за предоставление тестового драйвера TIO.

54. Вихрь

##\$"404"#N#S# , ,,#$#?@\404!?@GJlICJlGCC*G^+0%=%=+0%x&fqpqqqiipsoddddoiipsohphhhhyhhhh? 	  ?nnn4$4#!000110000011110000100000100000110000011001100000111100001110011000111000110000
#?\++++:----:++++:H@((((4O0O4O@((((()()()){}){x}x){}x()){}){}()){}){})<[-]>[-]-[<+>-----]<+x%"404"?.⌂----.++++.>11     
#i(N/"404"ooo@ENTHOEONHSSEONTHOEONSETssipceaiiiiiscejiiiijeeeejapmzaeeaeueewzaeeeaeewzaeeaeueewqs??|?)999|997+|++++!999777+++++!999997+++++!   	  
print(404)	
 		
 		
 	
__DATA__=1
# \"404"*CC'[-][ .-$_"404"&]
"""pp
I want 404 of this
How much is it
#  -52, Z, -1                          #
#  -48, Y, -1                          #
#  -52, X, -1                          #
[-][
x::=~404
::=
x
]<<<
> 404
>> Output 1
red up two blue up red up one blue up red up two blue up
baaaaa bleeeeeeeeet bleeeeeeeeet baaaaa bleeeeeeeeet
a now 404 dollar off!
a has been selling out worldwide!
2 LEFT
2 LEFT
2 UP
2 LEFT
2 TEACH
1 LEFT
1 RIGHT
1 BOND
1 BOND
1 TEACH
2 YELL
1 FIGHT
2 YELL
1 TEACH
2 YELL
set ! 52
set ! 48
set ! 52
+------+
|$0011\|
|/000\0|
|0/0@11|
|00  10|
|0\10/0|
|\1100/|
+------+
$'main'
 \-444o000o444omm^

[-][$++++++++++++++++++++++++++++++++++++++++++++++++++++.----.++++.#
<<<<<<```>>>>.>.>.
]
ss"""
#7777777777777777777777777777724091557093543643💬404💬➡77▲▲▲²²▲²²¡▼▼▼▼¡▲▲▲▲¡⠎⡆⡎⡆⢐⠣⠃s&&&&~-<<:<<:<<<:<:>>>>>>>>:^||||G<>

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

Вихрь описывается как Turning Tarpit [sic], в котором используются только две инструкции: 1 и 0. 1 вращает текущее колесо инструкций (либо математическое колесо, либо колесо операций), 0 меняет местами вращение колеса и два 0 выполняет инструкцию и переключает колеса. Соответствующие инструкции находятся в первой строке:

000110000011110000100000100000110000011001100000111100001110011000111000110000

000110000 Switch to math wheel and execute math.not (math.val = 1)
011110000 Execute math.store, (memval = math.val = 1)
10000     Execute math.add, (math.val = math.val+memval = 1+1 = 2)
010000    Execute math.store (memval = math.val = 2)
0110000   Execute math.multiply, (math.val = math.val*memval = 2*2 = 4)
01100     Execute math.store (memval=math.val) and switch to the ops ring
110000    Execute ops.one (ops.val = 1)
011110000 Executes ops.intio, printing memval (4)
11100     Add one to memory pointer (memval=0)
1100      Execute maths.nop to switch back to ops ring
011100    Execute ops.intio, printing memval (0)
01100     Execute maths.store, (memval=maths.val=4)
00        Execute maths.intio, printing memval (4)

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

Редактировать: исправил кучу сломанных вещей

(Команды быть осторожными в будущем: UDLR%"[.]o473psjw)

Если какие-либо программы работают для будущих языков или не работают для текущих или предыдущих языков, пожалуйста, прокомментируйте.

Джо Кинг
источник
@ Zacharý RE: мой комментарий по OP - на некоторых этапах это имеет место, ...print(0 or 404)но не является подпоследовательностью 97-байтовой N-программы.
Джонатан Аллан
@JonathanAllan да, меня это тоже немного беспокоило. Подпрограмма действительно означает , что они связаны с окончательной программе, но я собираюсь от вопроса спецификации здесь
Джо Кинг
Нет, вы не отказываетесь от спорных вопросов. «Представление» означало весь пост, а не код.
Захари
1
@ Мего Готово. Было немного сложнее, чем предполагалось, но все получилось
Джо Кинг,
1
Я думаю, что вы сможете добавить TinCan . @MDXF тоже. Я не могу, потому что Jelly и M не позволят начать с любой строки #. Я действительно сожалею, включая эти два языка, ха-ха.
Дилнан
16

53 языка, 2789 байт

Bash, Foo, Implicit, Древесный уголь, Emoji,> <>, rk, Brain-Flak, C, Set, Cood, Arcyou, TRANSCRIPT, SILOS, Коммерческий, C ++, Брайль, Deadfish ~, Memescript 1.0, ETA, Python 1, Python 3, PARI / GP, Лили, Деление, Десятичное, Кубическое, Побитовое, TinCan, Шепот, Туэ, Emotinomicon, что ??!, Ook !, зло, Леннифак, Блаблафак, Камни, TacO, COW, Символический брейнфак, Недогрузка, Железная дорога , Reticular, Gaot ++, PATH, axo, Monkeys, Nhohnhehr, xEec, VTFF, K-on Fuck, Churro и Forked. Попробуйте все онлайн в тестовом драйвере!

Присоединяйтесь к нам в чате для этого вызова!


Этот пост слишком велик, так что вот суть моего прогресса. Текущая итоговая программа:

раздвоенный

#undef l" 404"p;((((\)0)0)0)0;(😭4😲⏬😭0😲⏬😭4😲⏬«404»[:5*11-1/1]%&)(404)S^/*NNNNTNNEONHSSEONTHOEONiisoddddoiisohOok! Ook! Ook! Ook? Ook? Ook. Ook. Ook. Ook. Ook? Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook? Ook! Ook? Ook. Ook. Ook. Ook! Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. ????!?!!?!??!!!???????????????!?!!!?!????!??????????????!!??!??!??!????!⎚404»💬404💬➡ to for the and of to to to to to is the and  a to to to to a and and and and a ;n4n0n4
#11404D301          \4%0%p%&
""""echo 404|| rk:start int x = 404 print: x rk:end R"404"*
exit;
#;
OUT &52 &1
OUT &48 &1
OUT &52 &1 */
#include<stdio.h>
main(){char aA[]={37,100,0};printf(aA,404);}/*<<<<<mzaeeeaeeaaaawuuuuwaaaa what the frick frack backtrack snick snack tic tac snick snack patty wack diddily dack tic tac diddily dack frick frack quarterback frick frack
x::=~404
::=
x #
set ! 52
#;⠎⡆⡎⡆⢐⠣⠃▲▲▲²²▲²²¡▼▼▼▼¡▲▲▲▲¡(♥ ͜ʖ♥)( ͡°((∩ ͡° ͜ʖ ͡°)⊃━☆゚.*( ͡° ͜ʖ ͡°)ᕦ( ͡°ヮ ͡°)ᕥ(♥ ͜ʖ♥)(♥ ͜ʖ♥)(♥ ͜ʖ♥)(♥ ͜ʖ♥)(♥ ͜ʖ♥)) ͡°)(∩ ͡° ͜ʖ ͡°)⊃━☆゚.*( ͡° ͜ʖ ͡°)(> ͜ʖ<)(♥ ͜ʖ♥)(♥ ͜ʖ♥)(♥ ͜ʖ♥)(♥ ͜ʖ♥)(> ͜ʖ<)( ͡° ͜ʖ ͡°)( ͡° ͜ʖ ͡°)( ͡° ͜ʖ ͡°)( ͡° ͜ʖ ͡°)(> ͜ʖ<)うんうんうんうんたんたんたんたんうんうんうんたんうんたんうんうんうんうんうんたんたんうんたんたんうんたんたんうんたんたんうんたんたんたんたんたんうんうんたんうんたんうんたんうんうんうんたんたんうんたんたんうんたんたんうんたんたんたんうんうんうんたんうんうんたんうんうんたんうんうんたんうんたんうんうん {o}===}{======={o}{o}}{======={o}{o}===}{======={o}
> 404
>> Output 1
I want 404 of this.
How much is it?
Ju is here.
>Ju, 404
>X Ju
b = 404
printInt b ;
set ! 48 MoOMoOMoO
set ! 52 MoOOOMmoO
+--------+
|$00110\ |
|/00001/ |
|\11000\ |
|/11000/ |
|\0100 \ |
|        | baaaaa bleeeeeeeeet
|  404p@ |
|        |
+--------+
$'main': OOMmOoOOM ;
 \-444o000o444o-{<$$^- >}+{-----v}+.----.++++.#
#  bleeeeeeeeet baaaaa ^        < bleeeeeeeeet >
2 LEFT
2 LEFT
2 UP
2 LEFT
2 TEACH
1 LEFT
1 RIGHT
1 BOND
1 BOND
1 TEACH
2 YELL
1 FIGHT
2 YELL
1 TEACH
2 YELL
red up two blue up red up one blue up red up two blue up ;
o now 404 dollars off!
o has been selling out worldwide!
#  -52, Z, -1                          #
#  -48, Y, -1                          #
#  -52, X, -1                          #
⡆⡎⡆⢐⠣⠃((((p 404)((()(((()()()){}){}){}){}){}){}){}) h#4 o# h#0 o# h#4 o# """
print(404)#"*/

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

Мой новый (только что реализованный) esolang!

MD XF
источник
что это за язык? (поздравляю со мной)
Джо Кинг
@ Честно говоря, я понятия не имею, что происходило в моей голове, когда я делал этот язык ... также спасибо за помощь с Брайлем и Deadfish ~, я надеюсь, вы не возражаете, что я использовал ваш код?
MD XF
не беспокойся, приятель
Джо Кинг
MDXF против Дилнана, я вижу.
Захари
2
@ Zacharý MD XF v Дилнан v Джо Кинг; каждый раз, когда я выдвигаюсь вперед, я засыпаю и затем должен идти в школу, и к тому времени, когда я возвращаюсь, они оба снова впереди, отстраивая свои языки и друг от друга ... вздох
MD XF
13

34 языка, 387 символов

Jelly , M , Pyon , Proton, Python 3, Python 2, Python 1, Perl 6, Perl 5, Ruby, BC, Pari / GP, Brainfuck, Emoji, Emotin🌗micon, Древесный уголь, Braingolf, Пустое пространство, Deadfish ~, Deadfish, Самоизменяющийся Brainfuck, Символический Brainfuck, Numberwang, Кардинал, Фактически, Деление, Прелюдия, Brain-Flak (BrainHack), Алфак, Deadfish x, TacO, Брайль, РК , зло

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

Если кто-то обнаружит, что одна из программ не работает для одного языка или одна программа работает для языка, который не должен, сообщите мне.

print(404)   	  
+1#<[-]>--[<+>-----]"404".⌂<+.----.++++.💬404💬➡😒😀😒😨😨😨⎚404»___pppissiiiisiiiio▲▲▲²²▲²²¡▼▼▼▼¡▲▲▲▲¡sipceaiiiiiscejiiiijeeeejaxxcxxxcxxxKddddKcxxxx7777777724091557093543643%R"404";77999++++++++!++++++++6+1+!++++++5++++!> @p404 sp7 rk:start print: "404"77szaeeaeueewzaeeeaeewzaeeaeueew
   	  
+1#((a(()a((()(((()()())a{})a{})a{})a{})a{})a{})a{})	
 		
 		
 	


+1#ṛ“Nạç»⠎⡆⡎⡆⢐⠣⠃

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

dylnan
источник
Вау, поздравляю, вы просто выбросили всех остальных из воды.
MD XF
@MDXF Спасибо! Я планирую делать больше, мне просто нужно пока остановиться.
Дилнан
Если бы только версии Джулии были достаточно разными, я мог бы побить тебя на 10 байтов этим вздохом
MD XF
@MDXF Кто-то опубликовал двойной ответ Джулии на вопрос о многоугольнике «Обмани или лечь», используя какую-то ошибку, но она была удалена, и я не помню, что это было
dylnan
@dynlan хорошо я вижу удаленные сообщения, так что я пойду проверю, спасибо!
MD XF
11

11 языков, 10 байтов

Пен

print(404

Pyon, Python 2

print 808//2

Pyon, Python 2, Python 1

print None or 404

Pyon, Python 2, Python 1, Python 3

die=0
print(die or 404);

Pyon, Python 2, Python 1, Python 3, Lua

print(None or 404)

Pyon, Python 2, Python 1, Python 3, Lua, Perl 5

print(404 or 0)

Pyon, Python 2, Python 1, Python 3, Lua, Perl 5, Ruby

;print("40"+"4")

Pyon, Python 2, Python 1, Python 3, Lua, Perl 5, Ruby, Swift 4

print("40"+"4")

Pyon, Python 2, Python 1, Python 3, Lua, Perl 5, Ruby, Swift 4, Perl 6

print(404**1)

Pyon, Python 2, Python 1, Python 3, Lua, Perl 5, Ruby, Swift 4, Perl 6, Юлия

print(404);

Pyon, Python 2, Python 1, Python 3, Lua, Perl 5, Ruby, Swift 4, Perl 6, Джулия, Лили

print(404)
MD XF
источник
Ницца. Очень простой и понятный ответ, и в нем все еще много языков
dylnan
6

4 языка: CJam, Python, Underload,> <>

Следующее работает в CJam, но не в Python, Underload или> <>:

404
  • Для CJam: это толкает литерал 404в стек. Программа заканчивается, и 404выводится.
  • To Python: эта программа состоит из одного выражения 404 . Выражение вычисляется, и программа завершается.
  • Недогрузить: 4и0 являются недопустимыми командами, поэтому интерпретатор TIO просто игнорирует их, и программа завершается.
  • Для> <>: 404толчки 4, 0и 4в стек. IP оборачивается к началу, и программа повторяется бесконечно.

Следующее работает в CJam или Underload (хотя это и ошибки), но не в Python или> <>:

N(404)S;(\
  • В CJam: помещает Nстроку (массив символов), содержащую перевод строки в стек. (выскакивает один символ (перевод строки) из строки. 404толкает 404в стек, а затем )увеличивает его, чтобы дать 405. S;вставляет пробелы, а затем немедленно удаляет их. (снова уменьшается, чтобы получить 404, а затем \переставляет новую строку и 404.404\nвыводится (пустой массив отображается как ничего).
  • Недогрузка: Nигнорируется. (404)толкает строку 404в стек. Sвыводит это. ;игнорируется (заставляет переводчика искать закрытие) , но, так как ничего не найдено, программа вызывает ошибку.
  • To Python: это неверный синтаксис (за выражением N(404)следует идентификаторS , который искажен), поэтому программа ошибается.
  • To> <>: Nневерная инструкция, поэтому программа ошибается.

Следующее работает в CJam (хотя это и ошибки), Underload или Python, но не> <>:

[]
Le=404
+Le#(404)S
(print(404))
  • В CJam: помещает []пустой массив в стек и Lпомещает пустой массив в стек. e=подсчитывает количество вхождений []в [], дачу 0. 404толкает 404в стек. +складывает два числа вместе, давая 404. Lснова помещает пустой массив в стек и e#создает комментарий, который длится до конца строки. (пытается извлечь элемент из массива, но поскольку верхний элемент стека является пустым массивом [], программа выдает ошибку.404все еще выводится.
  • Для Python: []это оператор, состоящий из неоперативной инструкции. Le=404определяет переменную, Leравную 404. +Leпринимает унарный плюс переменной Le(довольно бесполезная операция) и результат отбрасывается. #(404)Sэто строка комментария. (print(404))отпечатки 404.
  • Для недогрузки: единственная релевантная часть (404)S, которая выталкивает 404в стек и выводит его. (print(404))толкает print(404)в стек, но с этим ничего не делается и программа завершается.
  • To> <>: [пытается вытолкнуть число из верхнего стека метастека, а затем вытолкнуть столько элементов из этого стека и превратить их в новый стек, который затем помещается в метастек. В стеке нет номера, поэтому ошибки программы.

Следующее работает в CJam (хотя это и ошибки), Python, Underload и> <>:

"404nnn;\
"
Le=404
+Le#(404)S
(print(404))
  • Для CJam: большая часть того, что я сказал в прошлый раз, применима здесь. Вместо того [], чтобы быть , у нас теперь есть строковый литерал, но содержание все еще неважно.
  • Для Python: большая часть того, что я сказал в прошлый раз, применима здесь. Вместо того [], чтобы быть неиспользованным первым выражением, теперь он является строковым литералом, но его содержание по-прежнему неважно.
  • Для недогрузки: все, что я сказал в прошлый раз, применимо здесь Все команды по-прежнему игнорируются.
  • To> <>: "начинается строковый режим, и IP оборачивается вокруг первой строки, выталкивая каждый символьный код в стек (это неважно). IP оборачивается и "снова попадает , что выходит из строкового режима. 404помещает цифры 404в стек, а затем nnnвыводит каждую из них (технически это происходит в обратном порядке, но так как 404 является палиндромом, это не имеет значения). ;заканчивает программу
Esolanging Fruit
источник
4

6 языков Brain-Hack, Brain-Flak, Brain-Fuck, Foo, Javascript, Alphuck

Еще не все!

Мозг-Hack

#(((()((()(((()()()){}){}){}){}){}){}){})

Отпечатки 404 в Brain-Hack

Brain-Hack, Brain-Flak

(((()((()(((()()()){}){}){}){}){}){}){})

Brain-Hack, Brain-Flak, Brain-Fuck

(((()((()(((()()()){}){}){}){}){}){}){})#-[<+>-----]<+.----.++++.>-.++++.

Использует комментарии в Brain-Flak, чтобы распечатать его

Brain-Hack, Brain-Flak, Brain-Fuck, Foo

"404"
(((()((()(((()()()){}){}){}){}){}){}){})#-[<+>-----]<+.----.++++.>-.++++.

Brain-Hack, Brain-Flak, Brain-Fuck, Foo, Javascript

console.log("404")
//(((()((()(((()()()){}){}){}){}){}){}){})#-[<+>-----]<+.----.++++.>-.++++.

Brain-Hack, Brain-Flak, Brain-Fuck, Foo, Javascript, Alphuck

console.log("404")
//(((()((()(((()()()){}){}){}){}){}){}){})#-[<+>-----]<+.----.++++.>-.++++.iaipiiiiiaecsaejiiiijeeeej
Кристофер
источник
Я упоминал, что я использую esolangs?
Кристофер
Хм, ваш оригинальный код Brainfuck печатает 4...
MD XF
@MDXF исправил это лол
Кристофер
Теперь в мозгах есть много дополнительного кода.
MD XF
3

5 языков (87 байт)

Пен

print(404

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

Python 2

print(404)

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

Brain-Flak (Брейнхак)

print(404)#(((()((()(((()()()){}){}){}){}){}){}){})

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

Brainfuck

Взято из ответа Джо Кинга, потому что я не смог придумать код для бреда, у которого были сбалансированы скобки (ограничение Brain-flak).

print(404)#(((()((()(((()()()){}){}){}){}){}){}){})-[<+>-----]<+.----.++++.>

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

05AB1E

Обратите внимание, что это также работает с ом.

#404q
print(404)#(((()((()(((()()()){}){}){}){}){}){}){})-[<+>-----]<+.----.++++.>

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

Спасибо Джо Кингу за -6 байтов.

Мистер Xcoder
источник
x%xИ [-]не нужны
Джо Кинг
@JoKing Ой, блин, я забыл удалить их после того, как адаптировал свой код для мозгового удара> _ <. Ред. Спасибо
г-н Xcoder
Вы можете легко добавить Python 1: gist.github.com/anonymous/77ed24162c35aae0a10e4e1cada8547a
MD XF
@MDXF Это кажется мне недействительным. 1) Версия Python 1 не работает в Pyon 2) Версия Python 1 также работает в Python 2, что запрещено.
Мистер Кскодер
@ Mr.Xcoder О, я забыл, что синтаксис без скобок работает в Python 2.
MD XF
1

2 языка, 24 байта, Python и пакетная обработка

Программа 1: Питон 3

print('404')

Программа 2: Python 3 и Batch

print('404')#|echo 404

После хеша комментирует остальную часть кода на python и | это инструкция в bash, чтобы сделать это, если другая команда не выполнена.

AleXYX
источник
0

2 языка, 53 байта: C и Python

Давайте начнем с чего-то простого.

Программа 1: C

int main(){printf("404");}

Программа 2: C и Python

#define print(X)int main(){printf("404");}
print(404)

TIO ссылки:

Это всего лишь пример, и, вероятно, его много раз побьют.

Zachary
источник
0

4 языка, 91 байт

C ++

#ifdef __cplusplus
#include "stdio.h"
int main(){printf("%d",404);}
#endif

C ++, C

#include "stdio.h"
int main(){printf("%d",404);}

Удаляет макрос C ++

C ++, C, Befunge

#define A "404",,,@
#include "stdio.h"
int main(){printf("%d",404);}

Добавляет макрос, который будет игнорироваться в C ++, но читаться как код в Befunge.

C ++, C, Befunge, Python

#define A "404",,,@
#include "stdio.h"//\
print(404);'''
int main(){printf("%d",404);}//'''

Объявление фрагмента кода, который приводит к тому, что следующая строка будет комментарием в C, но не в Python ( //<backslash>)

Zachary
источник