Автор Тема: [PHP] Условности  (Прочетена 111348 пъти)

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Re: [PHP] Условности
« Отговор #15 -: Mar 10, 2010, 12:00 »
Най-хубавото нещо на всеки програмен език е тва, ти пък анатема  :)

Добре, без цикли и без масиви, само с 2 if-a:

Код
GeSHi (PHP):
  1. <?php
  2.  
  3. //$x=...;
  4. //$y=...;
  5.  
  6. $o=max(0,floor($x/24));
  7. $p=max(0,floor($x/60));
  8.  
  9. $z=0;
  10.  
  11. $z+=min($p,1)*59;
  12. if ($p==0) $z+=min($o,1)*23;
  13.  
  14. $z+=max($x,0);
  15. if (($x>0)&&($o==0)) $z=$x+$y;
  16.  
  17. echo "$z\n";
  18.  
  19. ?>
  20.  
« Последна редакция: Mar 10, 2010, 13:19 от VladSun »
Активен

"Knowledge is power" - France is Bacon

VladSun

  • Moderator
  • Напреднали
  • *****
  • Публикации: 2166
    • Профил
Re: [PHP] Условности
« Отговор #16 -: Mar 10, 2010, 13:21 »
Добре, добре - останаха още два типа решения на задачката :) (поне за толкова знам)
« Последна редакция: Mar 10, 2010, 13:24 от VladSun »
Активен

KISS Principle ( Keep-It-Short-and-Simple )
http://openfmi.net/projects/flattc/
Има 10 вида хора на този свят - разбиращи двоичния код и тези, които не го разбират :P

neter

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 3408
  • Distribution: Debian, SailfishOS, CentOS
  • Window Manager: LXDE, Lipstick
    • Профил
    • WWW
Re: [PHP] Условности
« Отговор #17 -: Mar 10, 2010, 15:45 »
Добре, да направя още един опит със същата идея за масив, като миналия път:
Код
GeSHi (PHP):
  1. <?php
  2.  
  3. $x = '...';
  4. $y = '...';
  5.  
  6. function check($value) {
  7.      if ($value-$GLOBALS['x'] > 0) return($value);
  8. }
  9.  
  10. $array = array(0 => 1, $x+$y => 24, $x+23 => 60, $x+59 => INF);
  11. $z = key(array_filter($array, "check"));
  12.  
  13. ?>
« Последна редакция: Mar 10, 2010, 15:48 от neter »
Активен

"Да си добре приспособен към болно общество не е признак за добро здраве" - Джиду Кришнамурти

VladSun

  • Moderator
  • Напреднали
  • *****
  • Публикации: 2166
    • Профил
Re: [PHP] Условности
« Отговор #18 -: Mar 10, 2010, 16:04 »
Интересно решение :)

Айде за капак:
* не може да се използва if  (решението на shoshon е ОК в този случай)

 ;D ;D ;D

Макар и да има още едно интересно решение с if ...
« Последна редакция: Mar 10, 2010, 16:06 от VladSun »
Активен

KISS Principle ( Keep-It-Short-and-Simple )
http://openfmi.net/projects/flattc/
Има 10 вида хора на този свят - разбиращи двоичния код и тези, които не го разбират :P

neter

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 3408
  • Distribution: Debian, SailfishOS, CentOS
  • Window Manager: LXDE, Lipstick
    • Профил
    • WWW
Re: [PHP] Условности
« Отговор #19 -: Mar 10, 2010, 16:24 »
Добре - същото, но без if:
Код
GeSHi (PHP):
  1. <?php
  2.  
  3. $x = '...';
  4. $y = '...';
  5.  
  6. function check($value) {
  7.      return(max(0,$value-$GLOBALS['x']));
  8. }
  9.  
  10. $array = array(0 => 1, $x+$y => 24, $x+23 => 60, $x+59 => INF);
  11. $z = key(array_filter($array, "check"));
  12.  
  13. ?>
Активен

"Да си добре приспособен към болно общество не е признак за добро здраве" - Джиду Кришнамурти

VladSun

  • Moderator
  • Напреднали
  • *****
  • Публикации: 2166
    • Профил
Re: [PHP] Условности
« Отговор #20 -: Mar 10, 2010, 16:25 »
* без {

муахаххаха :)
Активен

KISS Principle ( Keep-It-Short-and-Simple )
http://openfmi.net/projects/flattc/
Има 10 вида хора на този свят - разбиращи двоичния код и тези, които не го разбират :P

VladSun

  • Moderator
  • Напреднали
  • *****
  • Публикации: 2166
    • Профил
Re: [PHP] Условности
« Отговор #21 -: Mar 10, 2010, 16:52 »
Всъщност решението на shoshon не връща правилния резултат (дори след "компилирането" му към PHP)

има една много минорна логическа грешка :)
даже три ;)
« Последна редакция: Mar 10, 2010, 16:56 от VladSun »
Активен

KISS Principle ( Keep-It-Short-and-Simple )
http://openfmi.net/projects/flattc/
Има 10 вида хора на този свят - разбиращи двоичния код и тези, които не го разбират :P

neter

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 3408
  • Distribution: Debian, SailfishOS, CentOS
  • Window Manager: LXDE, Lipstick
    • Профил
    • WWW
Re: [PHP] Условности
« Отговор #22 -: Mar 10, 2010, 17:42 »
Всеки момент очаквам да кажеш "без php" ;D Ето какво измъдрих за премахване на функцията (защото не знам начин функция да се изпише без {, но ако има, ще се радвам да го науча):
Код
GeSHi (PHP):
  1. <?php
  2.  
  3. $x = '...';
  4. $y = '...';
  5.  
  6. $array = array(0 => 1, $x+$y => 23, $x+23 => 59, $x+59 => INF);
  7. $z = array_pop(array_keys(array_unique(array(0 => max(0,$x-key($array)), $x+$y => max(0,$x-next($array)), $x+23 => max(0,$x-next($array)), $x+59 => max(0,$x-next($array))))));
  8.  
  9. ?>

P.S.: VladSun, нещо да не отказваш бирата и/или цигарите, че и нас завличаш по този мъчителен път [_]3
« Последна редакция: Mar 10, 2010, 17:44 от neter »
Активен

"Да си добре приспособен към болно общество не е признак за добро здраве" - Джиду Кришнамурти

VladSun

  • Moderator
  • Напреднали
  • *****
  • Публикации: 2166
    • Профил
Re: [PHP] Условности
« Отговор #23 -: Mar 10, 2010, 18:25 »
 >:D Цигарите - за 30-ти път сигурно :)

Без PHP няма да стане, но съм сигурен, че  ще се справите и с последното условие:

* използване на "(" само веднъж!!!

 ;)
Активен

KISS Principle ( Keep-It-Short-and-Simple )
http://openfmi.net/projects/flattc/
Има 10 вида хора на този свят - разбиращи двоичния код и тези, които не го разбират :P

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Re: [PHP] Условности
« Отговор #24 -: Mar 10, 2010, 18:42 »
Може ли на C?

Каквото кажеш, няма да се среща повече от веднъж...гарантирано :)
Активен

"Knowledge is power" - France is Bacon

VladSun

  • Moderator
  • Напреднали
  • *****
  • Публикации: 2166
    • Профил
Re: [PHP] Условности
« Отговор #25 -: Mar 10, 2010, 18:54 »
То едва ли ще има разлика...
Дай да видим :)
Активен

KISS Principle ( Keep-It-Short-and-Simple )
http://openfmi.net/projects/flattc/
Има 10 вида хора на този свят - разбиращи двоичния код и тези, които не го разбират :P

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Re: [PHP] Условности
« Отговор #26 -: Mar 10, 2010, 18:59 »
Е то е ясно, каквото ми трябва си го #define-вам и да му мисли preprocessor-a :) Cheat-ване е сега де, ама пък на - гледаш в сорса - има го само веднъж :)
Активен

"Knowledge is power" - France is Bacon

VladSun

  • Moderator
  • Напреднали
  • *****
  • Публикации: 2166
    • Профил
Re: [PHP] Условности
« Отговор #27 -: Mar 10, 2010, 19:05 »
Не се приема :P
Активен

KISS Principle ( Keep-It-Short-and-Simple )
http://openfmi.net/projects/flattc/
Има 10 вида хора на този свят - разбиращи двоичния код и тези, които не го разбират :P

VladSun

  • Moderator
  • Напреднали
  • *****
  • Публикации: 2166
    • Профил
Re: [PHP] Условности
« Отговор #28 -: Mar 10, 2010, 19:06 »
Подсказка за if-варианта, който се търси - http://en.wikipedia.org/wiki/Short-circuit_evaluation .
Ограниченията за него са тези изисквани преди отпадането му :)
Активен

KISS Principle ( Keep-It-Short-and-Simple )
http://openfmi.net/projects/flattc/
Има 10 вида хора на този свят - разбиращи двоичния код и тези, които не го разбират :P

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Re: [PHP] Условности
« Отговор #29 -: Mar 11, 2010, 00:37 »
Гр, почвам да се подсещам за знаменитата задача за програмата дето трябвала да си принтне сорса. Само дето там няма толкова ограничения :(


//offtopic
Цяла статия в уикипедия имало по този въпрос, преди години колко си бях блъскал главата по този проблем, ама тогава нямаше уикипедия :(

http://en.wikipedia.org/wiki/Quine_(computing)
« Последна редакция: Mar 11, 2010, 00:46 от gat3way »
Активен

"Knowledge is power" - France is Bacon