1. PHP / Говнокод #19034

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    <?php
    
    class Palindrome {
    	protected $text;
    
    	function __construct($text) {
    		$this->text = $text;
    	}
    
    	protected function isPalindrome($text) {
    		$string	= mb_strtolower(preg_replace("/[^A-Za-zА-Яа-я0-9]/", "", $text));
    		$status = mb_strlen($string) > 2?($string == $this->reverce($string)):false;
    
    		return (object) [
    				'status' => $status, 
    				'string' => $string, 
    				'original' => trim($text, ' ')
    			];
    	}
    
    	protected function comparingStrings($first_string, $last_string) {
    		$comparing = mb_strlen($first_string) > mb_strlen($last_string);
    		return $comparing?$first_string:$last_string;
    	}
    
    	protected function findPalindrome()
    	{
    		$palindrome = mb_strlen($this->text);
    		$result		= false;
    
    		for ($i = 0; $i < $palindrome; $i++) {
    			$palindrome_c = $palindrome-$i;
    			for ($j = 0; $j < $palindrome_c; $j++) {
    				$find 		= $this->isPalindrome(mb_substr($this->text, $j, $palindrome_c, "UTF-8"));
    
    				if ($find->status) {
    					$result = $this->comparingStrings($find->original, $result);
    				}
    			}
    		}
    
    		return $result;
    	}
    
    	public function view() {
    		if ($this->isPalindrome($this->text)->status) 
    			return $this->text;
    
    		if ($palindrome = $this->findPalindrome())
    			return $palindrome;
    
    		return mb_substr($this->text, 0, 1);
    	}
    }
    
    $view = 'Введите палиндром!';
    
    if (isset($_POST['text'])) {
    	$palindrome = new Palindrome($_POST['text']);
    	$view = $palindrome->view();
    }
    
    ?> 
    
    <html>
    	<head>
    		<title>Palindrome</title>
    	</head>
    	<body>
    		<div><?=$view?></div>
    		<form action="?" method="POST">
    			<input type="text" name="text">
    			<input type="submit">
    		</form>
    	</body>
    </html>

    Накатил тестовое на коленке.

    Запостил: HiNeX, 17 Ноября 2015

    Комментарии (4) RSS

    Добавить комментарий