Можно ли зациклить for?
Преподаватель заявил, что, если кто-то зациклит for (именно успешно зациклит, я так понимаю, т.е., чтобы программа работала и выполняла какие-то функции), то она поставит зачёт автоматом. Я, конечно, понимаю, что это безумно, но реально ли это? И если да, то как?
Ответы (8 шт):
c-like languages:
for (;;);
Ну и препод.
Python (source):
def zero_to_infinity():
i = 0
while True:
yield i
i += 1
for x in zero_to_infinity():
print(x)
l = [1]
for x in l:
l.append(x + 1)
print(x)
Ну, как-то так можно попробовать:
#include <iostream>
int main () {
int j =1;
for (int i = 0; i!=j; ++i){
std::cout << "Гони зачет!" << endl;
i =0;
}
return 0;
}
Поскольку язык программирования пока неизвестен, то пусть будет Python:
for _ in iter(int, 1):
pass
Давайте ее удивим и завесим программу с пустым main();
struct A
{
A(){for(;;);}
};
static A a;
int main()
{
return 0;
}
Так можно нарисовать лабиринт:
#include <iostream>
struct A
{
A(){for(;;std::cout<<(1&rand()?'\\':'/'));}
};
static A a;
int main()
{
return 0;
}
\//\\\\/\/\\\\\\//\//\//\///\//\\\////\\///\//\/////\//\\\\/\/\/\
/\\//\//\//\\//\\//\\\//\\\\////\\/\/\\/\/\//\\\/\\\\\\///\\/\\\/
//\\/\//////\///\\\//\\///\\\//\\\/\//\//\/\\///\\\\\//\/\\\\/\\/
////\/\\//\\\//\//\\\/\/\\/\\/\\/\\\\\\\\/\//\\\\////\//\/\///\\\
/\/\/\\\\/\/\//\\/\\///\//\\\\////\/\\//\\//\/\/\//\//\/////\//\\
\////\\\\\//\\\\\//\\/\//\\\\\/\\/\\\\/\//\\\/\//\\/\\///\\//\\\\
//\\///\\\/\/\\\/\\\\\/\//\\\\/\\\\/\\\//\\\/\/\/\////\///\\\/\\\
/\\\/\\\\///\\//\/\/\\//\/\\\//\\\/\\\\//\/\//\\\/\////\///\/////
/\\\/\\\\/\\/\///\//\\/\\\//\//\\\\///\\\\/\/\\///\\\\\\\\\/\\///
\//\/\/\\\\/\\/\////\\\//\\\\\\//\////\////\\\//\////\///\///\//\
Ну есть много способов. Приведу примеры на C++.
- В цикле увеличивать переменную и сразу уменьшать:
for (int i = 0; i < 1; i++) {
cout << "О как могу! \n";
i--;
}
- Сделать цикл, в котором не изменять переменную, а присваивать:
for (int i = 0; i < 1; i = 0) {ляляля}
или
for (bool i = true; i == true; i = true) {тра-ля-ля}
- Следующий вариант просто пропустить в цикле for вообще все, что можно:
for (;;) {
cout << "Супермощь!\n";
}
- И последний вариант, который дам: идти не в ту сторону, так что условие всегда будет верным:
for (int i = 0; i < 1; i--) {
cout << "To infinity and beyond!";
}
Удачи!
Пустой main через define
#define return for (;;);
int main()
{
return 0;
}
C++
#include <iostream>
int main(){
for (unsigned char i = 0; i < 256; ++i)
std::cout << i;
}
#include <iostream>
#define continue goto my_for
#define for my_for:
int main()
{
for
{
std::cout << "Hello" << std::endl;
continue;
}
return 0;
}
Чем не for? ;)
Контент для лиц старше 18 лет. Возможны приступы ярости и вспышки насилия. Не рекомендуется к просмотру беременным и людям пожилого возраста.