Comments 92
Извините, но я не программист и не понял, что Вы хотите сказать. Много лет на хабре, но такого не видал. Обычно авторы поясняют и разжёвывают.
Прикольный код, зачем минуса-то летят? На статью не тянет?
Как Вы воспримите статью с таким скромным содержанием:
Инспектируем трафик локалки и внешки
ip inspect name INSPECT_OUT dns
ip inspect name INSPECT_OUT icmp
ip inspect name INSPECT_OUT ntp
ip inspect name INSPECT_OUT tcp router-traffic
ip inspect name INSPECT_OUT udp router-traffic
ip inspect name INSPECT_OUT icmp router-traffic
Как Вы воспримите статьюЯ бы промотал ленту и забыл, что такая статья существует.
1. Инициализация программы функцией main()
2. Switch() — не знаю что делает.
3. Case () — какое-то пред-удсловие, если так можно выразиться?
4. Printf () — выводит на экран.
5. Break — похоже на то что не даёт printf сделать свою работу сразу.
6. If () — в итоге я не понял условие и, что оно выполняет.
Вижу, что до 7го case-а включительно используется break, потом case-ы идут с 9го по убывающей и в конце программа ждёт исполнения условия с аргументом (s++<9) возвращает в main(s)?
Только как это в итоге выведет н экран я не понимаю. Знаю, что могу покопать интернет по каждой функции, но раз такая пляска было интересно почитать вашу интерпретацию кода.
Пишу с мобилы, извините за ошибки.
жуть какая — прямо в Совок вернули — «Чему учит данное произведение?»
Но если очень хочется, то как учебный пример, для начинающего учить программирование, очень даже.
А какое такое? Простое? А вы разобрали пример? Вы поняли почему эта программа распечатает весь текст стихотворения? Вы видели много сишных программ с рекурсией функции main? — все-таки раздел «ненормальное пронраммирование». И если хотите вызов, напишите программу, которая распечатает весь текст стихотворения, и при этом будет короче (можно на другом языке).
Но проблема в том, что выложить код не значит написать статью.
К тому же, если уж говорить о «Не нормальном программировании», то уровень статей Хабра — это не рекурсивный вызов main, а представление данной функции как массива.
Да, так можно.
Да, такое делали.
Нет, так делал не я, и нет, я написать такую статью не смогу.
За это время она успевает сгенерить стихотворение.
Но Хабр это посты в которых тебе разжёвывают от и до, а в конце ты такой «вау!» и просветлился, а эта заметка, это просто анекдот.
Надо было прикрутить подводку (интро) про авто-генерацию стихов что ли.
Даже не понятно зачем читатель на него время потратил.
main (int s){
if (s=1) print("Вот дом,\n");
if (s=2) print("\nА это пшеница,\n");
if (s=3) print("\nА это весёлая птица-синица,\n");
if (s=4) print("\nВот кот,\n");
if (s=5) print("\nВот пёс без хвоста,\n");
if (s=6) print("\nА это корова безрогая,\nЛягнувшая");
if (s=7) print("\nА это старушка, седая и строгая,\n");
if (s=8) print("\nА это ленивый и толстый пастух,\n");
goto s;
9: print("\nВот два петуха,\nКоторые будят того пастуха,\n");
8: print("Который бранится с коровницей строгою,\n");
7: print("Которая доит корову безрогую,\nЛягнувшую");
6: print(" старого пса без хвоста,\n");
5: print("Который за шиворот треплет кота,\n");
4: print("Который пугает и ловит синицу,\n");
3: print("Которая часто ворует пшеницу,\n");
2: print("Которая в темном чулане хранится\nВ доме,\n");
1: print("Который построил Джек.\n");
if (s++<9) main(s);
}
for(s=1;s<10;s++){
if (s=1) print("Вот дом,\n");
if (s=2) print("\nА это пшеница,\n");
if (s=3) print("\nА это весёлая птица-синица,\n");
if (s=4) print("\nВот кот,\n");
if (s=5) print("\nВот пёс без хвоста,\n");
if (s=6) print("\nА это корова безрогая,\nЛягнувшая");
if (s=7) print("\nА это старушка, седая и строгая,\n");
if (s=8) print("\nА это ленивый и толстый пастух,\n");
if (s>8) print("\nВот два петуха,\nКоторые будят того пастуха,\n");
if (s>7) print("Который бранится с коровницей строгою,\n");
if (s>6) print("Которая доит корову безрогую,\nЛягнувшую");
if (s>5) print(" старого пса без хвоста,\n");
if (s>4) print("Который за шиворот треплет кота,\n");
if (s>3) print("Который пугает и ловит синицу,\n");
if (s>2) print("Которая часто ворует пшеницу,\n");
if (s>1) print("Которая в темном чулане хранится\nВ доме,\n");
print("Который построил Джек.\n");
}
void f(int i, int j, char* a) {
if (i=j) printf(a);
if (i+10>j) printf(a);
}
for(s=1;s<10;s++){
f(s,1,"Вот дом,\n");
f(s,2,("\nА это пшеница,\n");
f(s,3,("\nА это весёлая птица-синица,\n");
f(s,4,("\nВот кот,\n");
f(s,5,("\nВот пёс без хвоста,\n");
f(s,6,("\nА это корова безрогая,\nЛягнувшая");
f(s,7,("\nА это старушка, седая и строгая,\n");
f(s,8,("\nА это ленивый и толстый пастух,\n");
f(s,18,("\nВот два петуха,\nКоторые будят того пастуха,\n");
f(s,17,("Который бранится с коровницей строгою,\n");
f(s,16,("Которая доит корову безрогую,\nЛягнувшую");
f(s,15,(" старого пса без хвоста,\n");
f(s,14,("Который за шиворот треплет кота,\n");
f(s,13,("Который пугает и ловит синицу,\n");
f(s,12,("Которая часто ворует пшеницу,\n");
f(s,11,("Которая в темном чулане хранится\nВ доме,\n");
print("Который построил Джек.\n");
}
void f(int i,int j,char*a){if(i=j)printf(a);if(i+10>j)printf(a);} for(s=1;s<10;s++){f(s,1,"Вот дом,n");f(s,2,("nА это пшеница,n");f(s,3,("nА это весёлая птица-синица,n");f(s,4,("nВот кот,n");f(s,5,("nВот пёс без хвоста,n");f(s,6,("nА это корова безрогая,nЛягнувшая");f(s,7,("nА это старушка, седая и строгая,n");f(s,8,("nА это ленивый и толстый пастух,n");f(s,18,("nВот два петуха,nКоторые будят того пастуха,n");f(s,17,("Который бранится с коровницей строгою,n");f(s,16,("Которая доит корову безрогую,nЛягнувшую");f(s,15,(" старого пса без хвоста,n");f(s,14,("Который за шиворот треплет кота,n");f(s,13,("Который пугает и ловит синицу,n");f(s,12,("Которая часто ворует пшеницу,n");f(s,11,("Которая в темном чулане хранитсяnВ доме,n");print("Который построил Джек.n");}
char* a[] = {"Вот дом,","\nА это пшеница,\n","\nА это весёлая птица-синица,\n","\nВот кот,\n","\nВот пёс без хвоста,\n","\nА это корова безрогая,\nЛягнувшая","\nА это старушка, седая и строгая,\n","\nА это ленивый и толстый пастух,\n","\nВот два петуха,\nКоторые будят того пастуха,\n","Который бранится с коровницей строгою,\n","Которая доит корову безрогую,\nЛягнувшую"," старого пса без хвоста,\n","Который за шиворот треплет кота,\n","Который пугает и ловит синицу,\n","Которая часто ворует пшеницу,\n","Которая в темном чулане хранится\nВ доме,\n","Который построил Джек.\n"}
void f(int i, int j, char* a) {
if (i=j) printf(a);
if (i+10>j) printf(a);
}
for(s=1;s<10;s++){
for(b=1;b<8;b++){
f(s,b,a[b]);
f(s,19-b,a[17-b]);}
print(a[17]);
}
#include <stdio.h>
const char* a[] = {"Вот дом,\n","\nА это пшеница,\n","\nА это весёлая птица-синица,\n","\nВот кот,\n","\nВот пёс без хвоста,\n","\nА это корова безрогая,\nЛягнувшая","\nА это старушка, седая и строгая,\n","\nА это ленивый и толстый пастух,\n","","","\nВот два петуха,\nКоторые будят того пастуха,\n","Который бранится с коровницей строгою,\n","Которая доит корову безрогую,\nЛягнувшую"," старого пса без хвоста,\n","Который за шиворот треплет кота,\n","Который пугает и ловит синицу,\n","Которая часто ворует пшеницу,\n","Которая в темном чулане хранится\nВ доме,\n","Который построил Джек.\n"};
int main() {
for(int s=1;s<9;s++) {
printf(a[s-1]);
for(int b=8;b>=0;b--) {
if (s>b) printf(a[18-b]);
}}}
Онлайн компилятор Си
в первом for надо s<10,По ссылке правильный вариант, а сюда скопировал с ошибкой :)
Сам код в этом случае
#include <stdio.h>const char* a[]={"","","","","","","","","","","","","","","","","",""};
int main(){for(int s=1;s<10;s++){printf(a[s-1]);for(int b=8;b>=0;b--){if(s>b)printf(a[18-b]);}}}
Можно пожать полный текст в gzip и при вызове распаковывать. В питоне 3 уложился в 579 символов:
import zlib
import base64
print(zlib.decompress(base64.a85decode('Gb"/%92<Ai%,LXl4ofQA-;c3)JtRu9>TuluFIKSY($ln0m)b$k@08h]Psptlp#l-6c_S55>%6KCCYiFGN*k)SB.iqk,B!!.P$$lAh/c$_b\\ujX]Kt`pab.SW9((V"Ya8S>NiI%F.</+e*:FJk2C(pe\\Ddpo,?\\]E--\'\\a,(%l"@J=>$3BN)UXoa+X?3>B\\YQ#TA/FeP-\'&#--U%i:f8UbZr<j#=BA#X.R5qg.B#nUjqJ\\Etb4bj!Obh]5!`+ullW,GcQFuE69b8C>o%g,tK\'mHTSL$=Q9dH$33E]>7STER$UQ;KFsMFWT=8daSY*\'(7XE(4shA]I""F!iiZV+*tW,X>B[$$L_3!KO(l68-Xk@dWVG(/7h$NatT?a"plK3Q_,MLTCi-^pPJ6"]08OR;Ef\\"[Xb0R]K:=l/ajog[H,&#lLnJFc^lPO2&:JrI6H3HM*h@qO`u0F9<..,W4S-"brQc-#VG*Mqa]R45PISL&')).decode())
Думаю, что в си можно сделать аналогично, хотя и будет чуть длиннее.
#define p printf
#define c case
#define b break;
и заменить все вхождения case, printf и break;. Это сэкономит 155 символов и в сумме вроде получается меньше 1000
#include <stdio.h>
#define c(L,S) case L:printf(S);
#define b break;
int main(int s) {
switch (s) {
c(1,"Вот дом,\n")b
c(2,"\nА это пшеница,\n")b
c(3,"\nА это весёлая птица-синица,\n")b
c(4,"\nВот кот,\n")b
c(5,"\nВот пёс без хвоста,\n")b
c(6,"\nА это корова безрогая,\nЛягнувшая")b
c(7,"\nА это старушка, седая и строгая,\n")b
c(8,"\nА это ленивый и толстый пастух,\n")
}
switch (s) {
c(9,"\nВот два петуха,\nКоторые будят того пастуха,\n")
c(8,"Который бранится с коровницей строгою,\n")
c(7,"Которая доит корову безрогую,\nЛягнувшую")
c(6," старого пса без хвоста,\n")
c(5,"Который за шиворот треплет кота,\n")
c(4,"Который пугает и ловит синицу,\n")
c(3,"Которая часто ворует пшеницу,\n")
c(2,"Которая в темном чулане хранится\nВ доме,\n")
c(1,"Который построил Джек.\n")
}
if (s++<9) main(s);
}
Автор правильно указал хаб: «Ненормальное программирование», а вот хаб «Программирование» лучше убрать, чтобы не было завышенных ожиданий у читателей, м.б. добавить «Кодобред». ИМХО тогда никаких претензий быть не должно, тем более, что заметка породила содержательные комменты с вариантами решений: нпр.
#!/bin/bash
A=(
"Вот дом,\n"
"\nА это пшеница,\n"
"\nА это весёлая птица-синица,\n"
"\nВот кот,\n"
"\nВот пёс без хвоста,\n"
"\nА это корова безрогая,\nЛягнувшая"
"\nА это старушка, седая и строгая,\n"
"\nА это ленивый и толстый пастух,\n"
)
B=(
"\nВот два петуха,\nКоторые будят того пастуха,\n"
"Который бранится с коровницей строгою,\n"
"Которая доит корову безрогую,\nЛягнувшую"
" старого пса без хвоста,\n"
"Который за шиворот треплет кота,\n"
"Который пугает и ловит синицу,\n"
"Которая часто ворует пшеницу,\n"
"Которая в темном чулане хранится\nВ доме,\n"
"Который построил Джек.\n"
)
for ((i=0; i<=9; i++)); do
printf "$(printf "%s" "${A[$i]}" "${B[@]: -$(($i+1))}")"
done
В почти всех решениях можно заменить "\nА это " на s+"...", что даст выгоду в 6*5=30 символов (-декларация s). Тоже самое с "Котор"
#include <stdio.h>
#define A ,"\nА это "
#define K ,"\nКотор"
char* a[]={"\nВот два петуха,"A"ленивый и толстый пастух,"A"старушка, седая и строгая,"A"корова безрогая,\nЛягнувшая","\nВот пёс без хвоста,","\nВот кот,"A"весёлая птица-синица,"A"пшеница,","Вот дом,"K"ые будят того пастуха,"K"ый бранится с коровницей строгою,"K"ая доит корову безрогую,\nЛягнувшую"," старого пса без хвоста,"K"ый за шиворот треплет кота,"K"ый пугает и ловит синицу,"K"ая часто ворует пшеницу,"K"ая в темном чулане хранится\nВ доме,"K"ый построил Джек.\n"};
main(){int x,y;for(x=8;x>=0;x--){printf(a[x]);for(y=x;y<9;y++){printf(a[y+9]);};};}
$ wc -m jack.c
621 jack.c
Поставил минус. Думаю, поставил правильно.
Свитч-кейс автомат — это может быть интересно. Рекурсивный main — это может быть интересно. Кстати, по стандарту языка нельзя рекурсивный main.
Но статья требует какого-то рассмотрения чтоли… А иначе общий уровень хабра будет неуклонно падать и получим со временем ithappens...
Но статья требует какого-то рассмотрения чтоли…
Интересный вопрос. А конкретнее можно: какое тут нужно рассмотрение? — Пересказ вики-статьи о рекурсии явно не нужен. Объяснение для чайника как это работает? — Пусть запустит в отладке и посмотрит по шагам, если в уме сообразить не может.
По первому впечатлению и мне показалось, что заметка неприлично краткая. Но подумал: как бы я это написал? — И понял, что однозначного ответа пока не имею. М.б. Вы поможете? (Вопрос не праздный: надеюсь понятно, что это мне нужно для публикаций на другие темы).
Заранее спасибо.
и стал чудовищно скучен
А разве так не должно быть? Всё-таки сюда не развлекаться ходят.
Сабж на хабре был бы заминусован в любые времена. Не тот формат.
Может вы правы, а может там просто пример выдающийся и это исключение подтвержающее правило.
исключение подтвержающее правило.
Так не бывает. Фраза про правила и исключения — имеет совсем другой смысл: наличие исключения косвенно указывает на существование правила. Т.е. если мы узнаём, что в одной далёкой стране некому гражданину разрешили носить шляпу в присутствии короля, мы заключаем, что там существует норма, согласно которой обычно этого делать нельзя.
habr куда-то скатился, и стал чудовищно скучен. именно из-за того, что наличие в статье чего-то раздражающего немедленно тянет ее в бан
Хабр сейчас — это что-то плохое, потому что не приемлет ваш стиль написания постов. А если бы принял, то сразу стал бы хорошим. То есть вы лучше знаете, как надо. А мнение людей, выраженное в форме минусов — ну, очевидно, оно высказано людьми, которые не понимают, как надо. То есть — антонимами д'Артаньяна.
Мой текст не являлся неинтересным (судя по комментариям) и никаго не обижал
На таких основаниях я мог бы запостить много чего. Например: рецепт борща моей супруги, отрывок из поэмы Блока, эротические воспоминания моей юности… Я этого не делаю, и я молодец. Потому что есть формат. Формат — это то подмножество интересных и необидных текстов, которое должно существовать именно в данном конкретном месте. Допустим, не стоит рассказывать анекдоты на похоронах (это также ответ на ваш комментарий ниже). Ваш интересный текст не входит в это подмножество? Ищите для него другое место.
Если вас не устраивает формат площадки — это проблема не площадки, а вас. Если вы не согласны, то проблемой площадки становитесь вы.
Как могла бы выглядеть статья:
— Краткое предисловие о том, что программисты любят меряться письками.
— Введение: классические задачи на программную генерацию текста. 99 бутылок пива и так далее.
— Постановка задачи: вывести такой-то текст, использовать как можно меньше символов.
— Наивный подход: тупо выводим текст целиком.
— Оптимизируем, избавляемся от повторения длинных подстрок.
— Вот в этом пункте могла бы содержаться ваша программа, сопровождённая художественным текстом.
— Дальнейшая оптимизация. Из свитч-кейса и рекурсии — в массив и цикл.
— Экономия на спичках: заменяем ещё какие-то общие подпоследовательности, выигрываем пяток байт. Применяем грязные сишные хаки, выигрываем ещё десяток байт.
— Жизнеутверждающий эпилог с упоминанием колмогоровской сложности.
Вот это была бы статья. А у вас огрызок.
А в комментариях был хоть один человек, который не понял, как это работает?
Здесь опять нет логики. Если все понимают этот код без объяснения, то зачем оно? На самом деле в комментариях была как раз просьба объяснить, а не написать SEO-шную статью, вроде как вы предлагаете, но мне кажется если и объяснять то отдельной статьей, но ее, увы, благодаря вам, на хабре не будет.
Обе части считают, что такие статьи не нужны.
объяснить, а не написать SEO-шную статью, вроде как вы предлагаете
Так это и есть «объяснить». Во-первых, объяснить, на кой ляд оно нам надо. Во-вторых — объяснить ход мысли, который привёл к такому решению. Ну и там попутно — как оно работает. Объяснить таким образом, чтобы это было понятно и интересно достаточно широкому кругу читателей. То, что у вас, одним непонятно (разумеется, такие есть, просто они в комментах не отметились, статья прошла строго мимо), другим неинтересно (то, что здесь развернулось оживлённое обсуждение — следствие отнюдь не достоинств поста).
отдельной статьей, но ее, увы, благодаря вам, на хабре не будет.
Вот опять вы хотите на кого-нибудь вину свалить. Сначала читатели глупые, теперь Sirion противный, зарубил на корню творческий порыв. Ну детский сад же, батенька.
Заявка на обнуление кармы была выполнена 1 июля 2010 в 17:24.
Второго шанса не будет. Ведите себя хорошо.
)))
С другой стороны, а если ваше творчество нигде нельзя опубликовать, чтобы не нарушить общепринятый стиль — ну может ну его в топку?
Зайдите на работе в свой С или С++ офтоп чат в телеграме/слаке, или что там у вас за система (если у вас нет офтоп чата, сочувствую), и закиньте туда свой код. Пусть коллеги улыбнутся.
А делиться на весь мир, наверное, не стоит того.
(я поставил минус статье, карму не трогал).
Пикабу с тегом программирование?
Удачи вам в освоении программирования.
#include <stdio.h>
main (int t, int _, char *a){return!0<t?t<3?main(-79,-13,a+main(-87,1-_,
main(-86,0,a+1)+a)): 1,t<_ ? main(t+1,_,a):3,main(-94,-27+t,a)&&t==2\
?_<13?main(2,_+1,"%s %d %d\n"):9:16:t<0?t<-72?
main(_,t,"@n'+,#'/*s{}w+/w#cdnr/+,{}r/*de}+,/*{*+,/w{%+,/w#q#n+,/#{l+,/n\
{n+,/+#n+,/# ;#q#n+,/+k#;*+,/'r :'d*'3,}{w+K w'K:'+}e#';dq#'l q#'+d'K#!\
/+k#;q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){)#}w'){){nl]'/+#n';d}rw' i;# ){nl]!\
/n{n#'; r{#w'r nc{nl]'/#{l,+'K {rw' iK{;[{nl]'/w#q#n'wk nw' iwk{KK{nl]!/\
w{%'l##w#' i; :{nl]'/*{q#'ld;r'}{nlwb!/*de}'c ;;{nl'-{}rw]'/+,}##'*}\
#nc,',#nw]'/+kd'+e}+;#'rdq#w! nr'/ ') }+}{rl#'{n' ')# }'+}##(!!/")
:t<-50?_==*a?putchar(31[a]):
main(-65,_,a+1):
main((*a=='/')+t,_,a+1):
0<t?main(2,2,"%s")
:*a=='/'||main(0,main(-61,*a,
"!ek;dc i@bK'(q)-[w]*%n+r3#l,{}:\nuwloca-O;m .vpbks,fxntdCeghiry"
),a+1);
}
Выводит текст:
On the frirst day of Christmas my true love gave to me
a partridge in a pear tree.
On the second day of Christmas my true love gave to me
two turtle doves
and a partridge in a pear tree.
On the third day of Christmas my true love gave to me
three french hens, two turtle doves
and a partridge in a pear tree.
On the fourth day of Christmas my true love gave to me
four calling birds, three french hens, two turtle doves
and a partridge in a pear tree.
On the fifth day of Christmas my true love gave to me
five gold rings;
four calling birds, three french hens, two turtle doves
and a partridge in a pear tree.
On the sixth day of Christmas my true love gave to me
six geese a-laying, five gold rings;
four calling birds, three french hens, two turtle doves
and a partridge in a pear tree.
On the seventh day of Christmas my true love gave to me
seven swans a-swimming,
six geese a-laying, five gold rings;
four calling birds, three french hens, two turtle doves
and a partridge in a pear tree.
On the eigth day of Christmas my true love gave to me
eight maids a-milking, seven swans a-swimming,
six geese a-laying, five gold rings;
four calling birds, three french hens, two turtle doves
and a partridge in a pear tree.
On the ninth day of Christmas my true love gave to me
nine ladies dancing, eight maids a-milking, seven swans a-swimming,
six geese a-laying, five gold rings;
four calling birds, three french hens, two turtle doves
and a partridge in a pear tree.
On the tenth day of Christmas my true love gave to me
ten lords a-leaping,
nine ladies dancing, eight maids a-milking, seven swans a-swimming,
six geese a-laying, five gold rings;
four calling birds, three french hens, two turtle doves
and a partridge in a pear tree.
On the ealeventh day of Christmas my true love gave to me
eleven pipers piping, ten lords a-leaping,
nine ladies dancing, eight maids a-milking, seven swans a-swimming,
six geese a-laying, five gold rings;
four calling birds, three french hens, two turtle doves
and a partridge in a pear tree.
On the twelfth day of Christmas my true love gave to me
twelve drummers drumming, eleven pipers piping, ten lords a-leaping,
nine ladies dancing, eight maids a-milking, seven swans a-swimming,
six geese a-laying, five gold rings;
four calling birds, three french hens, two turtle doves
and a partridge in a pear tree.
Собирал его когда-то BC 3.1
Постой пример. Когда я заканчивал универ(начало 2000х), не считая стаърых языков, в реальном мире и академическом был небольшой стек языкОв: C, C++, Delphi, pascal, html, php, Perl, Java, flash, assembler, ну может ещё чего позабыл. Как я и говорил, основу я понимал, но кодить не получалось. Развечто простые программки, что то выводить и шрифты разные расивать. Однако с середины 2000х и по седей день поВился такой зоопарк фреймворков и до этой поры находящихся в тени языков, что-то понял, что точно никогда не освою.
Однако никогда не переставал читать статьи на хабре именно поткоддингу, что бы хоть немного не отставать от паровоза просто в понимании. Потому-то программисты это люди, которые сидят в соседнем кабинете, и я не могу себе позволить эти темы не листать. И вот хожу с ребятами курить, и мне есть отчем с ним потрещать. Да они понимают, что я не пишу, но с охотской делаться со мной тем над чем работают, и ям понимаю. Просто сам заводить это не смогу, но поставить задачу или понять над чем работает- это присутствует.
Другой пример, я любитель старых шутеров «кваки», начитал кучу статей здесь на хабре, как ребята разбирают код квейка. Просто потому что интересна сама игра. Ребята объясняют, как работает та или иная сущность в коде, и это прикольно.
Так что советую автору статьи не сдаваться, а принять во внимание таких недоучек, как я и продолжать публиковаться, когда появится возможность.
Дом, который построил Джек