diff options
Diffstat (limited to 'content/digarden/pages/20220501163136-список.org')
-rw-r--r-- | content/digarden/pages/20220501163136-список.org | 85 |
1 files changed, 0 insertions, 85 deletions
diff --git a/content/digarden/pages/20220501163136-список.org b/content/digarden/pages/20220501163136-список.org deleted file mode 100644 index e69d759..0000000 --- a/content/digarden/pages/20220501163136-список.org +++ /dev/null @@ -1,85 +0,0 @@ -:PROPERTIES: -:ID: 6e47e4b0-b09c-42c5-b559-9eaadb1bd9ec -:END: -#+title: Список - -** Односторонний список на PHP с методом своп -#+begin_src php -<?php - - class ConsType - { - function __construct($first, $second) - { - $this->first = $first; - $this->second = $second; - } - - function isCons($elem) { - return $this->$elem instanceof ConsType; - } - - function swap($i1, $i2) - { - $tail1 = null; - $tail2 = $this; - $elem1 = null; - $elem2 = null; - - if ($i1 > $i2) [$i2, $i1] = [$i1, $i2]; - - $imax = max($i1, $i2); - - for ($i = 0; $i < $imax; $i++) - { - if($i === $i1) { - $elem1 = $tail2->getHead(); - $tail1 = $tail2; - } - - $tail2 = $tail2->getTail(); - } - - $elem2 = $tail2->getHead(); - - $tail1->first = $elem2; - $tail2->first = $elem1; - } - - function getTail() { - return $this->second; - } - - function getHead() { - return $this->first; - } - - function getConsElement($index) { - "Функция возвращает пару по индексу"; - $tail = $this; - - for ($i=0; $i < $index; $i++) - { - $tail = $tail->getTail(); - } - - return $tail->first; - } - } - - # Список вида [1, 2, 3, 4] - $test_list = new ConsType(1, new ConsType(2, new ConsType(3, 4))); - - var_dump($test_list); - - $test_list->swap(0, 2); - - var_dump($test_list); - - # Но есть баг, который мне уже лень исправлять - # Не работает с последним элементом списка - - # Ну и похуй, я спать - -#+end_src - |