Школоло / Говнокод #8141 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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
unit uIsPalindrome; 
  
interface
  
function IsPalindrome(const aString: string): Boolean; 
  
implementation
  
uses
       Spring.Collections 
     , {$IF CompilerVersion >= 230}System.{$IFEND}SysUtils 
     ; 
  
function CleanString(const aString: string): string; 
var
  C: char; 
begin
  // Remove all non-alpha chars and make all lower case 
  // Spaces don't matter, so let's count only letters 
  Result := ''; 
  for C in LowerCase(aString) do
  begin
    if CharInSet(C, ['a'..'z', 'A'..'Z']) then
    begin
      Result := Result + C; 
    end; 
  end; 
end; 
  
function IsPalindrome(const aString: string): Boolean; 
var
  Stack: IStack<Char>; 
  C: Char; 
  NoSpaces: string; 
  Temp: string; 
begin
  NoSpaces :=  CleanString(aString); 
  
  Stack := TCollections.CreateStack<Char>; 
  for C in NoSpaces do
  begin
    Stack.Push(C); 
  end; 
  Temp := ''; 
  repeat
    Temp := Temp + Stack.Pop; 
  until Stack.Count = 0; 
  Result := Temp = NoSpaces; 
end; 
  
end.

true java style...

Запостил: d_dev d_dev, (Updated )

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

      • Ой, я буковку I не заметил. Тогда да.
        Интересно, когда же в Дельфи добавят механизм автодеструкторов более вменяемый, чем тормозные интерфейсы?
        Ответить
        • >Интересно, когда же в Дельфи добавят механизм автодеструкторов более вменяемый, чем тормозные интерфейсы?

          Не расстраивайтесь так. Майкрософт, наперекор стандарту С++, в новый 2011 компилятор добавила тормозные интерфейсы (:
          Ответить
        • >Интересно, когда же в Дельфи добавят механизм автодеструкторов более вменяемый, чем тормозные интерфейсы?
          Дельфи: 0
          ЦПП: 1
          Ответить
        • В каком это месте они тормознутые?
          Проблема интерфейсов не в тормознутости, а в том, что базовый интерфейс не пуст
          Ответить
    • не. а пробелы, регистр?
      "А роза упала на лапу Азора". не прокатит
      Ответить
      • def isPalindrome(s: String) = {
            val normalized = s.toLowerCase.filter(!Character.isSpace(_))
            normalized.reverse == normalized
        }
        не?
        Ответить
  • > true java style
    public class Palindrome {
        public static boolean isPalindrome(String s) {
    	int l = s.length();
    	int n = l / 2;
    	for (int i = 0; i <= n; ++i) {
    	    if (s.charAt(i) != s.charAt(l - i - 1))
    		return false;
    	}
    	return true;
        }
    }
    Ответить
    • [patch]
       - int l = s.length();
       - 	int n = l / 2;
       - 	for (int i = 0; i <= n; ++i) {
       - 	    if (s.charAt(i) != s.charAt(l - i - 1))
       - 		return false;
       - 	}
       - 	return true;
       + 	return new StringBuilder(s).reverse().toString().equals(s);
      [/patch]
      Ответить
      • P.S. Зато мой вариант не требует выделения двух дополнительных буферов и выполняет в два раза меньше сравнений. За всё нужно платить... 🙂
        Ответить
      • Думаю, код в топике компилируется. Чтобы мой компилировался, нужен класс.
        Ответить
      • > unit uIsPalindrome;
        ...
        > interface
        ...
        > implementation
        ...
        > end.

        На каждый чих создавать модуль?
        Ответить
        • Казус в том, что гк писавший это еще и Spring.Collections подключил для стэка, хотя он там вообще никчему. Помоему человек джаваинфицирован на весь мозг...
          Ответить
          • в Apache Commons, если не ошибаюсь в классе StringUtils есть метод - isPalindrome.
            для тех кто не может в палиндромы.

            Если в делфи портировали не только спринг и Apache Commons, то....
            Ответить
            • Странно, если оно так. Мне не известно ни одного случая, где использовались палиндромы не только just for fun. Я ошибаюсь, или палиндромы, как совершенные числа - красивы, но совершенно бесполезны?
              Ответить
              • Детишки можно решить задачку по палиндромам на олимпиаде и выиграть железку или деньги. Польза очевидна 🙂
                Ответить
          • Никто из моих знакомых java-разработчиков не стал бы реализовывать _это_ через стэк. Так что java тут не при чём.
            Ответить
  • function IsPalindrome(const A: string): Boolean;
    var s: string;
    begin
    s := UpperCase(ReplaceText(A, ' ', ''));
    Result := s = ReverseString(s);
    end;
    Ответить
    • Вот видите, от языка на самом деле мало что зависит.
      p.s. "А роза\t упала на\n лапу Азора"
      Ответить
      • К сожалению некотрые языки влияют на неокрепшие умы многих говнокодеров, и мы наверное в их числе
        Ответить

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

Помни, guest, за тобой могут следить!

    А не использовать ли нам bbcode?


    8