Как посадить слона в холодильник?

Здесь выкладываем всё! Смешные картинки, истории, анекдоты, всё, что вызывает у вас смех.

Модератор: Модераторы разделов

Аватара пользователя
Славик
Сообщения: 159
ОС: AltLinux2.4 master

Как посадить слона в холодильник?

Сообщение Славик »

Вспомнилась вот старая детская задачка-шутка:

Как посадить слона в холодильник в три приема?

Ответ был неожиданным и простым:

1) Открыть холодильник.
2) Посадить в холодильник слона.
3) Закрыть холодильник.

Интересно, а как эту задачку решили бы здесь, на разных языках программирования?
Количество приемов, слонов и холодильников не ограничивается.
Претензии по жестокому обращению с животными не принимаются - слоны виртуальные.
Познание бесконечности требует бесконечного времени.
А. и Б. Стругацкие
Понедельник начинается в субботу
Спасибо сказали:
Аватара пользователя
Dark Neo
Сообщения: 309
Статус: Грустный красноглазик
ОС: MacOS 10.9.4

Re: Как посадить слона в холодильник?

Сообщение Dark Neo »

ОК. Пасквиль


Код:

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: Как посадить слона в холодильник?

Сообщение Славик »

Отвечаю в каске изпацтула - давно так не смеялся :crazy: :crazy: :crazy:
Познание бесконечности требует бесконечного времени.
А. и Б. Стругацкие
Понедельник начинается в субботу
Спасибо сказали:
Аватара пользователя
MadDog
Бывший модератор
Сообщения: 2298
Статус: Добрый банщик

Re: Как посадить слона в холодильник?

Сообщение MadDog »

Такой абстрактный код :)

Код: Выделить всё

if($holodilnik > 0) {
 if($slon > 0) {
   print 'запихнуть слона в холодильник';
 } else {
    print 'Найти слона';
 }
} else {
print 'Купить холодильник';
}
MadDog's Blog
Внимательно читать: Как правильно задавать вопросы
No fate but what we make
Спасибо сказали:
prayer
Сообщения: 8
ОС: Mandriva

Re: Как посадить слона в холодильник?

Сообщение prayer »

Исправления к коду Carpenter:
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*);
/*...*/
}
Спасибо сказали:
sbar
Сообщения: 354
ОС: Gentoo

Re: Как посадить слона в холодильник?

Сообщение sbar »

как-то так что ли...

Код:

#!/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()
или дверь тоже как вложенный класс сделать лучше?

Carpenter писал(а):
18.08.2007 22:08
ОК. Пасквиль
кстати 2 одинаковых идентификатора "slon", компилер будет ругаться
Спасибо сказали:
Аватара пользователя
Славик
Сообщения: 159
ОС: AltLinux2.4 master

Re: Как посадить слона в холодильник?

Сообщение Славик »

Pr0b3L писал(а):
19.08.2007 17:45
или дверь тоже как вложенный класс сделать лучше?


А может как внешний модуль подключить? Типа холодильник в разобранном виде получили? %)
Познание бесконечности требует бесконечного времени.
А. и Б. Стругацкие
Понедельник начинается в субботу
Спасибо сказали:
Аватара пользователя
Dark Neo
Сообщения: 309
Статус: Грустный красноглазик
ОС: MacOS 10.9.4

Re: Как посадить слона в холодильник?

Сообщение Dark Neo »

кстати 2 одинаковых идентификатора "slon", компилер будет ругаться


Не должен. Там slon и slon_1. Компилятор это допускает.
Линукс, это такая штука, которую хочется сломать...
Спасибо сказали:
prayer
Сообщения: 8
ОС: Mandriva

Re: Как посадить слона в холодильник?

Сообщение prayer »

Паскаль допускает нижнее подчеркивание в именах идентификаторов? Давно я не брал в руки шашек...
Спасибо сказали:
Аватара пользователя
Dark Neo
Сообщения: 309
Статус: Грустный красноглазик
ОС: MacOS 10.9.4

Re: Как посадить слона в холодильник?

Сообщение Dark Neo »

Допускает. По крайней мере Turbo Pascal 7.0. Препод в универе вешался от моего кода:

Код: Выделить всё

procedure the_very_long_name;

var
 long_int: longint;


При том, все 29 вариантов были отрешаны в таком духе.... По-моему, препод потом уже и догадался...
Линукс, это такая штука, которую хочется сломать...
Спасибо сказали:
Аватара пользователя
Liksys
Сообщения: 2910

Re: Как посадить слона в холодильник?

Сообщение Liksys »

Carpenter писал(а):
20.08.2007 21:44
Допускает. По крайней мере Turbo Pascal 7.0. Препод в универе вешался от моего кода:

+1 :D

Код: Выделить всё

...
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)
...

Кусок кода из проги моей :) Я тоже пишу длинные имена, даже в не-ООП. Удобнее идентифицировать переменную, только надо выработать свои правила наименованимя, тогда не надо искать переменную, как она точно пишется, просто знаешь, что она есть, а исходя из того, что она делает, воссоздаешь в памяти ее имя))
Спасибо сказали:
Аватара пользователя
Dark Neo
Сообщения: 309
Статус: Грустный красноглазик
ОС: MacOS 10.9.4

Re: Как посадить слона в холодильник?

Сообщение Dark Neo »

Код: Выделить всё

             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;


В принципе, так же, только делаю пустые строки между логичными (для себя) кусками кода.
Линукс, это такая штука, которую хочется сломать...
Спасибо сказали:
Аватара пользователя
Liksys
Сообщения: 2910

Re: Как посадить слона в холодильник?

Сообщение Liksys »

Carpenter писал(а):
21.08.2007 21:08
В принципе, так же, только делаю пустые строки между логичными (для себя) кусками кода.

И это тоже делаю, этот скопированный мной кусок как раз одна логическая единица :)
Спасибо сказали:
Аватара пользователя
carnivore
Сообщения: 118
ОС: kUbuntu 8.04

Re: Как посадить слона в холодильник?

Сообщение carnivore »

Код: Выделить всё

/**
 Описывает объекты которые можно перемещать
*/
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
Спасибо сказали:
Аватара пользователя
serge_m
Сообщения: 317
ОС: ASP Linux 14

Re: Как посадить слона в холодильник?

Сообщение serge_m »

Ребят, а как же универсальность? А если перед вами в этот холодильник кто-то уже засунул жирафа? Тогда после ваших действий результат будет не тот что нужен...в холодильнике будет и слон и жираф, а нужен только слон....эх проверочку бы....:)
Спасибо сказали:
Аватара пользователя
phasma
Сообщения: 405

Re: Как посадить слона в холодильник?

Сообщение phasma »

Код: Выделить всё

#!/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
Спасибо сказали:
Аватара пользователя
pashaa
Сообщения: 171
Статус: Заводчик Мопсов
ОС: Mops 6.2 RC1

Re: Как посадить слона в холодильник?

Сообщение pashaa »

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
Спасибо сказали:
Аватара пользователя
pashaa
Сообщения: 171
Статус: Заводчик Мопсов
ОС: Mops 6.2 RC1

Re: Как посадить слона в холодильник?

Сообщение pashaa »

[
MOPSLinux 6.2-RC1 KDE 4.1.2
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Как посадить слона в холодильник?

Сообщение sash-kan »

haskell
> holodilnik where slon = "elephant"; holodilnik = (head slon) : (tail slon)
"elephant"
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
DiS
Сообщения: 296
ОС: Gentoo

Re: Как посадить слона в холодильник?

Сообщение DiS »

serge_m писал(а):
23.08.2007 16:22
Ребят, а как же универсальность? А если перед вами в этот холодильник кто-то уже засунул жирафа? Тогда после ваших действий результат будет не тот что нужен...в холодильнике будет и слон и жираф, а нужен только слон....эх проверочку бы....:)

... и еще проверить поместится ли слон в холодильник. :ph34r:
Если правильно задать вопрос, то он сам по себе будет ответом.
Спасибо сказали:
Аватара пользователя
tarkus
Сообщения: 38

Re: Как посадить слона в холодильник?

Сообщение tarkus »

главная проблема всех таких прог - то что сам слон слон редко копируется в холодильник, а помещается лишь линка на него, что сильно ограничивает симуляцию.
Ушел на прогулку до выхода KDE4. Всем удачи! :)
Спасибо сказали:
prayer
Сообщения: 8
ОС: Mandriva

Re: Как посадить слона в холодильник?

Сообщение prayer »

carnivore, +1
Спасибо сказали:
Аватара пользователя
Славик
Сообщения: 159
ОС: AltLinux2.4 master

Re: Как посадить слона в холодильник?

Сообщение Славик »

serge_m писал(а):
23.08.2007 16:22
Ребят, а как же универсальность? А если перед вами в этот холодильник кто-то уже засунул жирафа?


А вот здесь уже нужно рассматривать усложненный алгоритм:

1) открыть холодильник
2) выпустить (съесть) содержимое (если есть). Можно под пиво. :drunk:
3) посадить слона
4)закрыть холодильник
Познание бесконечности требует бесконечного времени.
А. и Б. Стругацкие
Понедельник начинается в субботу
Спасибо сказали:
Аватара пользователя
kennyz
Сообщения: 8
ОС: Много *nix'ов

Re: Как посадить слона в холодильник?

Сообщение kennyz »

Реализация на 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: Как посадить слона в холодильник?

Сообщение Славик »

Гламурненько. От себя пять копеек... Добавить бы модуль собутыльника :blush: . Если там жираф - можно и с жирафом. Со слоном стремно - а вдруг в пьянке буйный?
Познание бесконечности требует бесконечного времени.
А. и Б. Стругацкие
Понедельник начинается в субботу
Спасибо сказали:
Аватара пользователя
Liksys
Сообщения: 2910

Re: Как посадить слона в холодильник?

Сообщение Liksys »

carnivore, C# фтопку!
Спасибо сказали:
Аватара пользователя
carnivore
Сообщения: 118
ОС: kUbuntu 8.04

Re: Как посадить слона в холодильник?

Сообщение carnivore »

Darth Liksys писал(а):
24.08.2007 11:36
carnivore, C# фтопку!

Учи матчасть!Это ж ИЖ!
#make --not-war love
Спасибо сказали:
Аватара пользователя
Liksys
Сообщения: 2910

Re: Как посадить слона в холодильник?

Сообщение Liksys »

Мдя, похожи, заразы)))
Все равно С# фтопку!
Спасибо сказали:
Аватара пользователя
moog
Сообщения: 599
ОС: Archlinux

Re: Как посадить слона в холодильник?

Сообщение moog »

Кстати, кто-то может аргументированно сказать почему C# так плох? А то у меня дядя кодит на нём, а я чувствую какую-то негативную ауру...)
Спасибо сказали:
Аватара пользователя
Red Gremlin
Сообщения: 512
Статус: самоучка
ОС: Rosa 2016 Fresh

Re: Как посадить слона в холодильник?

Сообщение Red Gremlin »

2carnivore:

Эксепшенов маловато, а вдруг слон в холодильнике все пиво выпьет и буянить начнет?
"В мире есть случайность, есть предопределенность и есть то, что ты планируешь совершить."
Спасибо сказали: