Как посадить слона в холодильник?
Модератор: Модераторы разделов
-
- Сообщения: 159
- ОС: AltLinux2.4 master
Как посадить слона в холодильник?
Вспомнилась вот старая детская задачка-шутка:
Как посадить слона в холодильник в три приема?
Ответ был неожиданным и простым:
1) Открыть холодильник.
2) Посадить в холодильник слона.
3) Закрыть холодильник.
Интересно, а как эту задачку решили бы здесь, на разных языках программирования?
Количество приемов, слонов и холодильников не ограничивается.
Претензии по жестокому обращению с животными не принимаются - слоны виртуальные.
Как посадить слона в холодильник в три приема?
Ответ был неожиданным и простым:
1) Открыть холодильник.
2) Посадить в холодильник слона.
3) Закрыть холодильник.
Интересно, а как эту задачку решили бы здесь, на разных языках программирования?
Количество приемов, слонов и холодильников не ограничивается.
Претензии по жестокому обращению с животными не принимаются - слоны виртуальные.
Познание бесконечности требует бесконечного времени.
А. и Б. Стругацкие
Понедельник начинается в субботу
А. и Б. Стругацкие
Понедельник начинается в субботу
-
- Сообщения: 309
- Статус: Грустный красноглазик
- ОС: MacOS 10.9.4
Re: Как посадить слона в холодильник?
ОК. Пасквиль
PHP
Длинновато вышло....
Код:
program slon;
type
slon = array [0 .. 3] of char; {объявление слона}
holodilnik = array [0 .. 10] of char; {объявление холодильника}
var
slon_1 : slon;
holodilnik_1 : holodilnik;
begin
slon_1 := 'slon'; {инициализация слона}
holodilnik_1 := 'holodilnik'; {и холодильника}
holodilnik_1 := holodilnik + slon_1; {помещение слона в холодильник}
writeln (holodilnik) {открыл холодильник посмотреть, не сбежал ли слон}
end.
PHP
Код:
<?php
$slon = $_GET['slon'];
$holodilnik = $_GET['holodilnik'];
$holodilnik += $slon;
echo $holodilnik;
?>[code]
С++
[code]class slon
{
slon()
{
//тут кароче конструктор всего слона. тут он рождается
}
~slon()
{
}
//а тут деструктор. замерз =)
}
class holodilnik
{
holodilnik()
{
//изготовление холодильника на заводе
}
~holodilnik()
{
//выбрасывание холодильника, т.к. слон обратно не вылазиит никак =)
}
open()
{
//открытие холодильника))
}
put(slon_1 : slon)
{
//метод для помещения слона slon_1 в холодильник
}
}
int main()
{
slon slon_;
holodilnik holodilnik_;
holodilnik.open();
holodilnik.put (slon_);
cout << holodilnik;
return 0;
}
Длинновато вышло....
Линукс, это такая штука, которую хочется сломать...
-
- Сообщения: 159
- ОС: AltLinux2.4 master
Re: Как посадить слона в холодильник?
Отвечаю в каске изпацтула - давно так не смеялся




Познание бесконечности требует бесконечного времени.
А. и Б. Стругацкие
Понедельник начинается в субботу
А. и Б. Стругацкие
Понедельник начинается в субботу
-
- Бывший модератор
- Сообщения: 2298
- Статус: Добрый банщик
Re: Как посадить слона в холодильник?
Такой абстрактный код 

Код: Выделить всё
if($holodilnik > 0) {
if($slon > 0) {
print 'запихнуть слона в холодильник';
} else {
print 'Найти слона';
}
} else {
print 'Купить холодильник';
}
-
- Сообщения: 8
- ОС: Mandriva
Re: Как посадить слона в холодильник?
Исправления к коду Carpenter:
PHP
C++
Альтернативная реализация на С++
PHP
Код: Выделить всё
$holodilnik .= $slon;//сдаётся мне, что это строки
C++
Код: Выделить всё
put(slon slon_1)
{
//метод для помещения слона slon_1 в холодильник
}
Альтернативная реализация на С++
Код: Выделить всё
struct Animal{
Animal(){}
}
class Elephant:public Animal{
public:
Elephant():Animal(){}
/*...*/
}
class Refrigerator{
public:
Refrigerator(){}
bool open();
bool close();
Refrigerator& operator<<(Animal*);
/*...*/
}
-
- Сообщения: 354
- ОС: Gentoo
Re: Как посадить слона в холодильник?
как-то так что ли...или дверь тоже как вложенный класс сделать лучше?
Код:
#!/bin/env python
# -*- coding: utf-8 -*-
class t_elephant:
def __init__(self):
pass
def put_into(self, refrigerator):
print 'Кладем слона в холодильник...',
if refrigerator.door_status != 'opened':
print '\t\t\t\t[ !! ]'
print "Error: Не могу посадить слона в холодильник, т.к. дверь не открыта."
from sys import exit
exit()
else:
print '\t\t\t\t[ ok ]'
class t_refrigerator:
door_status = ''
def __init__(self):
self.door_status = 'closed' # по дефолту
def open_door(self):
print 'Открываем дверь...',
if self.door_status != 'opened':
self.door_status = 'opened'
else:
print "Warning: Дверь холодильника уже открыта!"
print '\t\t\t\t\t[ ok ]'
def close_door(self):
print 'Закрываем дверь...',
if self.door_status != 'closed':
self.door_status = 'closed'
else:
print "Warning: Дверь холодильника уже закрыта!"
print '\t\t\t\t\t[ ok ]'
elephant = t_elephant()
refrigerator = t_refrigerator()
refrigerator.open_door()
elephant.put_into(refrigerator)
refrigerator.close_door()
кстати 2 одинаковых идентификатора "slon", компилер будет ругаться
-
- Сообщения: 159
- ОС: AltLinux2.4 master
Re: Как посадить слона в холодильник?
А может как внешний модуль подключить? Типа холодильник в разобранном виде получили? %)
Познание бесконечности требует бесконечного времени.
А. и Б. Стругацкие
Понедельник начинается в субботу
А. и Б. Стругацкие
Понедельник начинается в субботу
-
- Сообщения: 309
- Статус: Грустный красноглазик
- ОС: MacOS 10.9.4
Re: Как посадить слона в холодильник?
кстати 2 одинаковых идентификатора "slon", компилер будет ругаться
Не должен. Там slon и slon_1. Компилятор это допускает.
Линукс, это такая штука, которую хочется сломать...
-
- Сообщения: 8
- ОС: Mandriva
Re: Как посадить слона в холодильник?
Паскаль допускает нижнее подчеркивание в именах идентификаторов? Давно я не брал в руки шашек...
-
- Сообщения: 309
- Статус: Грустный красноглазик
- ОС: MacOS 10.9.4
Re: Как посадить слона в холодильник?
Допускает. По крайней мере Turbo Pascal 7.0. Препод в универе вешался от моего кода:
При том, все 29 вариантов были отрешаны в таком духе.... По-моему, препод потом уже и догадался...
Код: Выделить всё
procedure the_very_long_name;
var
long_int: longint;
При том, все 29 вариантов были отрешаны в таком духе.... По-моему, препод потом уже и догадался...
Линукс, это такая штука, которую хочется сломать...
-
- Сообщения: 2910
Re: Как посадить слона в холодильник?
+1

Код: Выделить всё
...
self.spy_menu = self.main_menu_bar.addMenu(self.tr("Spy"))
self.start_spy_menu_action = self.spy_menu.addAction(Qt.QIcon(IconsDir+"start_spy.png"),
self.tr("Запустить Spy"), self.startSpy)
self.stop_spy_menu_action = self.spy_menu.addAction(Qt.QIcon(IconsDir+"stop_spy.png"),
self.tr("Остановить Spy"), self.stopSpy)
self.stop_spy_menu_action.setEnabled(False)
self.spy_menu.addSeparator()
self.show_translate_window_menu_action = self.spy_menu.addAction(self.tr("Показывать всплывающее окно"))
self.show_translate_window_menu_action.setCheckable(True)
self.show_translate_window_menu_action.setChecked(True)
...
Кусок кода из проги моей

-
- Сообщения: 309
- Статус: Грустный красноглазик
- ОС: MacOS 10.9.4
Re: Как посадить слона в холодильник?
Код: Выделить всё
for i := 1 to mas_length do
begin
if i <> mas_length then
clrscr;
mas_max := data_mas[i];
mas_max_number := i;
for j := i to mas_length do
begin
if data_mas[j] > mas_max then
begin
mas_max := data_mas[j];
mas_max_number := j;
end;
paint (mas_max_number, j, i);
delay (round(300000 / sqr(mas_length)));
end;
temp_var := data_mas[i];
data_mas[i] := data_mas[mas_max_number];
data_mas[mas_max_number] := temp_var;
end;
В принципе, так же, только делаю пустые строки между логичными (для себя) кусками кода.
Линукс, это такая штука, которую хочется сломать...
-
- Сообщения: 2910
-
- Сообщения: 118
- ОС: kUbuntu 8.04
Re: Как посадить слона в холодильник?
Код: Выделить всё
/**
Описывает объекты которые можно перемещать
*/
public interface Movable
{
/**
Перемещает объект в указанные координаты
*/
void moveTo(int x, int y);
int getX();
int getY();
}
/**
Опысывает итерфейс объектов которые можно открывать(и закрывать)
*/
public interface Openable
{
/**
Метод открытия.Выкидывает DoorStatusChangeException если двери что-то мешает открыться
*/
void open() throws DoorStatusChangeException;
void close() throws DoorStatusChangeException;
}
/**
А это описание защищенного открывающегося объекта.Вдруг нашего слона кто-то захочет стырыть?!
*/
public interface SecureOpenable
{
SecureConnection authentify(String user, String pwd) throws SecurityException;
void open(SecureConnection conn) throws DoorStatusChangeException;
void close(SecureConnection conn) thows DoorStatusChangeException;
}
/**
Описание объекта который реагируе на температуру
*/
public interface TemperatureListener
{
void temperatureChanged(int newValue);
}
/**
Описание объекта которого можно заморозить
*/
public interface Freezable
{
/**
Указывает реакцию объекта на холод.Значение задается одной из констант:TE_ShotoHolodnovato, TE_NeVNatureShotoHolodnovato, TE_HolodnoShoPPC и TE_YaFKriagene
*/
void setTemperatureEffect(int status);
void stuchatZubami(int amplitude);
/**
Переступать с ноги на ногу
*/
void dance(int rhythm);
}
public interface Zhyvotnae
{
void FBabruisk();
void zhrat(Object hafcheg);
Shit gadit();
void dryhnut(int period, boolean sHrapom);
}
public class Elephant implements Zhyvotnae, TemperatureListener, Freezable, Movable
{
public Elefant()//Слониха-мать и слон-батя делают нашего слона
{//...
}
public HelloWorld()//Слон рождаеться
{
}
public void finalize()//Слон издох...
}
public class Fridge implement Movable/*холодильник-то тоже можно перемещать*/, Openable
{
public Fridge()//холодильник делают на фабрике
{//...
}
public finalize()//Холодильник отработал свое.Выбросить
{//...
}
}
public class SupaDupaFridge implements Movable, SecureOpenable
{
public SupaDupaFridge()//Супер-пупер холодильник собирается на секретной лаборатории НАСА
{//...
}
}//А где же finalize?А супер-пупер холодильник неуничтожим!
public class Zadacha
{
public static void main(String[] args);
{
Elephant slonyara=new Elephant();
Fridge fridge=new Fridge();
SupaDupaFridge supaDupaFridge=new SupaDupaFridge();
fridge.open();
slonyara.moveTo(fridge.getX(),fridge.getY());
fridge.close();
SecureConnection conn=Null;
try
{
conn=supaDupaFridge.authentification("Ктулху","Фхтагн!");
}
catch(SecurityException e)
{
try
{
conn=supaDupaFridge.authentification("криветко","Йа линупсоедное криветко!!!)))");
}
catch(SecurityException e)
{
try
{
conn=supaDupaFridge.authentification("root","Билл Гейтс--лох!");
}
catch(SecurityException e){}
}
}
supaDupaFridge.open(conn);
fridge.moveTo(supaDupaFridge.getX(),supaDupaFridge.getY());
supaDupaFridge.close(conn);
conn.close();
}
}
#make --not-war love
-
- Сообщения: 317
- ОС: ASP Linux 14
Re: Как посадить слона в холодильник?
Ребят, а как же универсальность? А если перед вами в этот холодильник кто-то уже засунул жирафа? Тогда после ваших действий результат будет не тот что нужен...в холодильнике будет и слон и жираф, а нужен только слон....эх проверочку бы....

-
- Сообщения: 405
Re: Как посадить слона в холодильник?
Код: Выделить всё
#!/bin/sh
echo "Слон" > upakovka_slona && mv upakovka_slona /dev/holodilnik
предварительно сделать линк на /dev/null
NB: Dell XPS 1330 T5250|DDR2 4GB|NV 8400|250 GB
Old NB: Asus A6km AMD Turion MT-32|DDR 2 GB|NV GFGO 7300|60 Gb
OS: Ubuntu 9.10, FreeBSD 8.0
Old NB: Asus A6km AMD Turion MT-32|DDR 2 GB|NV GFGO 7300|60 Gb
OS: Ubuntu 9.10, FreeBSD 8.0
-
- Сообщения: 171
- Статус: Заводчик Мопсов
- ОС: Mops 6.2 RC1
Re: Как посадить слона в холодильник?
phasma писал(а): ↑23.08.2007 16:32Код: Выделить всё
#!/bin/sh echo "Слон" > upakovka_slona && mv upakovka_slona /dev/holodilnik
предварительно сделать линк на /dev/null
Ну собрать и подгрузить модуль холодильника в ядро не забыть. А то в ядре нет дров к такому устройству.
#modprobe holodilnik
MOPSLinux 6.2-RC1 KDE 4.1.2
-
- Сообщения: 171
- Статус: Заводчик Мопсов
- ОС: Mops 6.2 RC1
-
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: Как посадить слона в холодильник?
haskell
> holodilnik where slon = "elephant"; holodilnik = (head slon) : (tail slon)
"elephant"
> holodilnik where slon = "elephant"; holodilnik = (head slon) : (tail slon)
"elephant"
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
-
- Сообщения: 296
- ОС: Gentoo
Re: Как посадить слона в холодильник?
... и еще проверить поместится ли слон в холодильник.

Если правильно задать вопрос, то он сам по себе будет ответом.
-
- Сообщения: 38
Re: Как посадить слона в холодильник?
главная проблема всех таких прог - то что сам слон слон редко копируется в холодильник, а помещается лишь линка на него, что сильно ограничивает симуляцию.
Ушел на прогулку до выхода KDE4. Всем удачи! :)
-
- Сообщения: 8
- ОС: Mandriva
Re: Как посадить слона в холодильник?
carnivore, +1
-
- Сообщения: 159
- ОС: AltLinux2.4 master
Re: Как посадить слона в холодильник?
А вот здесь уже нужно рассматривать усложненный алгоритм:
1) открыть холодильник
2) выпустить (съесть) содержимое (если есть). Можно под пиво.

3) посадить слона
4)закрыть холодильник
Познание бесконечности требует бесконечного времени.
А. и Б. Стругацкие
Понедельник начинается в субботу
А. и Б. Стругацкие
Понедельник начинается в субботу
-
- Сообщения: 8
- ОС: Много *nix'ов
Re: Как посадить слона в холодильник?
Реализация на Java ME
Код: Выделить всё
public void SlonToFridgeKernel(boolean dverca, boolean isEda, boolean SlonVlez) {
dverca = false;
isEda = false;
String[] eda = Holodilnik.eda;
String[] eda_ili_voda = Holodilnik.eda.substring(666,777);;
try {
Holodilnik.открытьDvercu();
dverca = true;
}
catch (ДверкаНеОткрыласьЭкзэпшн) {
Form frm = new Form("Error!");
frm.append("Дверка сломана, попробуйте позже");
Display.setCurrent(frm);
destroyApp(true);
}
if (eda != null) {
isEda = true;
eda = Holodilnik.вытащитьIzHolodilnika();
}
if (isEda) {
if (eda_ili_vode.equals("hleb, sup, kolbasa, CblP")) {
EatWithBeer();
System.out.printLn("Можно и с пивом");
}
else System.out.printLn("Жидкость с пивом - деньги на ветер");
}
try {
Slon.putToHolodilnik();
Alert a = new Alert("Trying", "Пробуем засунуть слона, пожалуйста подождите", null, AlertType.WARNING);
a.setTimeout(a.Forever);
Display.setCurrent(a);
SlonVlez = true;
}
catch (СлонНеПодходитКРазмеруХолодильникаЭкзэпшн) {
Form frm = new Form("Error");
frm.append("Слон слишком большой, выберите другого");
Display.setCurrent(frm);
SlonVlez = false;
}
if (SlonVlez) {
Alert a = new Alert("Congratulations", "Поздравляем, вы запихнули слона в холодильник", null, AlertType.INFO);
a.setTimeout(a.Forever);
Display.setCurrent(a);
}
Holodilnik.closeDverca();
}
-
- Сообщения: 159
- ОС: AltLinux2.4 master
Re: Как посадить слона в холодильник?
Гламурненько. От себя пять копеек... Добавить бы модуль собутыльника
. Если там жираф - можно и с жирафом. Со слоном стремно - а вдруг в пьянке буйный?

Познание бесконечности требует бесконечного времени.
А. и Б. Стругацкие
Понедельник начинается в субботу
А. и Б. Стругацкие
Понедельник начинается в субботу
-
- Сообщения: 2910
Re: Как посадить слона в холодильник?
carnivore, C# фтопку!
-
- Сообщения: 118
- ОС: kUbuntu 8.04
Re: Как посадить слона в холодильник?
#make --not-war love
-
- Сообщения: 2910
Re: Как посадить слона в холодильник?
Мдя, похожи, заразы)))
Все равно С# фтопку!
Все равно С# фтопку!
-
- Сообщения: 599
- ОС: Archlinux
Re: Как посадить слона в холодильник?
Кстати, кто-то может аргументированно сказать почему C# так плох? А то у меня дядя кодит на нём, а я чувствую какую-то негативную ауру...)
-
- Сообщения: 512
- Статус: самоучка
- ОС: Rosa 2016 Fresh
Re: Как посадить слона в холодильник?
2carnivore:
Эксепшенов маловато, а вдруг слон в холодильнике все пиво выпьет и буянить начнет?
Эксепшенов маловато, а вдруг слон в холодильнике все пиво выпьет и буянить начнет?
"В мире есть случайность, есть предопределенность и есть то, что ты планируешь совершить."