Яuбy / Говнокод #5119 Ссылка на оригинал

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
  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
  77. 77
  78. 78
  79. 79
  80. 80
  81. 81
  82. 82
  83. 83
  84. 84
  85. 85
  86. 86
  87. 87
  88. 88
  89. 89
  90. 90
  91. 91
  92. 92
  93. 93
  94. 94
  95. 95
  96. 96
  97. 97
  98. 98
  99. 99
  100. 100
require "date"
#Конвертируем массив цифр в двухмерный масив для отображения
def get_numbers(numbers)
  output = []
  one = [["-","-","-","*","*"],["-","-","*","-","*"],["-","*","-","-","*"],["*","-","-","-","*"],["-","-","-","-","*"],["-","-","-","-","*"],["-","-","-","-","*"]]
  two = [["*","*","*","*","*"],["-","-","-","-","*"],["-","-","-","-","*"],["*","*","*","*","*"],["*","-","-","-","-"],["*","-","-","-","-"],["*","*","*","*","*"]]
  three = [["*","*","*","*","*"],["-","-","-","-","*"],["-","-","-","-","*"],["*","*","*","*","*"],["-","-","-","-","*"],["-","-","-","-","*"],["*","*","*","*","*"]]
  four = [["*","-","-","-","*"],["*","-","-","-","*"],["*","-","-","-","*"],["*","*","*","*","*"],["-","-","-","-","*"],["-","-","-","-","*"],["-","-","-","-","*"]]
  five = [["*","*","*","*","*"],["*","-","-","-","-"],["*","-","-","-","-"],["*","*","*","*","*"],["-","-","-","-","*"],["-","-","-","-","*"],["*","*","*","*","*"]]
  six = [["*","*","*","*","*"],["*","-","-","-","-"],["*","-","-","-","-"],["*","*","*","*","*"],["*","-","-","-","*"],["*","-","-","-","*"],["*","*","*","*","*"]]
  seven = [["*","*","*","*","*"],["-","-","-","-","*"],["-","-","-","*","-"],["-","-","*","-","-"],["-","*","-","-","-"],["*","-","-","-","-"],["*","-","-","-","-"]]
  eight = [["*","*","*","*","*"],["*","-","-","-","*"],["*","-","-","-","*"],["*","*","*","*","*"],["*","-","-","-","*"],["*","-","-","-","*"],["*","*","*","*","*"]]
  nine = [["*","*","*","*","*"],["*","-","-","-","*"],["*","-","-","-","*"],["*","*","*","*","*"],["-","-","-","-","*"],["-","-","-","-","*"],["*","*","*","*","*"]]
  zero = [["*","*","*","*","*"],["*","-","-","-","*"],["*","-","-","-","*"],["*","-","-","-","*"],["*","-","-","-","*"],["*","-","-","-","*"],["*","*","*","*","*"]]
  seperator = [["-","-","-","-","-"],["-","*","-","*","-"],["-","-","-","-","-"],["-","-","-","-","-"],["-","-","-","-","-"],["-","*","-","*","-"],["-","-","-","-","-"]]
  for i in numbers
    case i
      when "0"
        output += [zero]
      when "1"
        output += [one]
      when "2"
        output += [two]
      when "3"
        output += [three]
      when "4"
        output += [four]
      when "5"
        output += [five]
      when "6"
        output += [six]
      when "7"
        output += [seven]
      when "8"
        output += [eight]
      when "9"
        output += [nine]
      when ":"
        output += [seperator]
    end
  end  
  return output
end
#Получаем массив с текущим временем
def get_time
  t = Time.new
  if t.hour.between?(0,9)
    hour = "0" + t.hour.to_s
  else
    hour = t.hour.to_s
  end
  if t.min.between?(0,9)
    min = "0" + t.min.to_s
  else
    min = t.min.to_s
  end
  if t.sec.between?(0,9)
    sec = "0" + t.sec.to_s
  else
    sec = t.sec.to_s
  end
  time = [hour[0],hour[1],":",min[0],min[1],":",sec[0],sec[1]]
end

#Рисуем с заменой символов на в
def display_time(symbols = {:star => "0", :line => " "})
  color_taf = 0
  color_tab = 7
  loop do
	#Для очитки экрана в UNIX
	if RUBY_PLATFORM == "i386-mingw32" then
	  system("cls")
	else
	  system("tput reset")
	end
	#Цвет и фон
    #system("tput setaf #{color_taf}")
    #system("tput setab #{color_tab}")
    m = get_numbers(get_time)
    #Посимвольная прорисовка
    for j in 0..6
      for i in 0..m.size-1
        for z in m[i][j]
          case z
            when "*"
              print symbols[:star]
            when "-"
              print symbols[:line]
            #sleep(0.01) Для просмотра прорисовки
          end
        end
        print " "
      end
      print "\n"
    end
    sleep(1)
  end
end
#Рисуем
display_time :star => "0", :line => " "

Фух... урезал до 100 строк :)

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

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

  • Если кто-то не понял то это консольные красивые часики 🙂
    Ответить
    • Это программа такая хитро....ная 🙂 на php было бы тоже самое!!!
      Ответить
      • На РНР было бы вполне прилично:

        $digits = array(
        	'***** ---** ***** ***** *---* ***** ***** ***** ***** ***** -----',
        	'*---* --*-* ----* ----* *---* *---- *---- ----* *---* *---* -----',
        	'*---* -*--* ----* ----* *---* *---- *---- ---*- *---* *---* --*--',
        	'*---* *---* ***** ***** ***** ***** ***** --*-- ***** ***** -----',
        	'*---* ----* *---- ----* ----* ----* *---* -*--- *---* ----* --*--',
        	'*---* ----* *---- ----* ----* ----* *---* *---- *---* ----* -----',
        	'***** ----* ***** ***** ----* ***** ***** *---- ***** ***** -----'
        );
        $matrix = array();
        foreach ( $digits as $dig )
        	$matrix[] = array_combine( array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, ':'), split(' ', $dig) );
        
        function render( &$matrix ) {
        	$out = '';
        	foreach ( $matrix as $row ) {
        		foreach ( str_split( date('H:i:s') ) as $j )
        			$out .= strtr( $row[$j], array('-' => ' ', '*' => '0') ) . ' ';
        		$out .= "\n";
        	}
        	return $out;
        }
        
        for(;;) {
        	system('clear');
        	echo render( $matrix );
        	sleep(1);
        }
        Ответить
        • P.S. date в foreach-е исключительно для пущей краткости и как дань душку сайта, а так же как генератор невероятности, если между тактами сменится секунда. =)
          Ответить
          • Но, безусловно, лучше будет вот так:
            function render( &$matrix ) {
            	$time = str_split( date('H:i:s') );
            	$out = '';
            	foreach ( $matrix as $row ) {
            		foreach ( $time as $j ) $out .= $row[$j] . ' ';
            		$out .= "\n";
            	}
            	return strtr( $out, array('-' => ' ', '*' => '0') );
            }
            Ответить
    • Могу говноверсию на PHP выложить... но будет тошнить всех 🙂
      Ответить
    • На руби можно писать очень говнисто, а можно очень хорошо. Все зависит от писающего...
      Ответить
  • И это на небыдло-руби такое?
    Автор ошибся, что назвал one, two итд раздельно, вместо того, чтобы в единый массив их запихать.
    Ответить
  • require "date"
    MATRIX = %W(
     ---** ***** ***** *---* ***** ***** ***** ***** ***** ***** -----
     --*-* ----* ----* *---* *---- *---- ----* *---* *---* *---* -*-*-
     -*--* ----* ----* *---* *---- *---- ---*- *---* *---* *---* -----
     *---* ***** ***** ***** ***** ***** --*-- ***** ***** *---* -----
     ----* *---- ----* ----* ----* *---* -*--- *---* ----* *---* -----
     ----* *---- ----* ----* ----* *---* *---- *---* ----* *---* -*-*-
     ----* ***** ***** ----* ***** ***** *---- ***** ***** ***** -----
    ).each_slice(11).map do |row|
      row_matrix = {}
      %W( 1 2 3 4 5 6 7 8 9 0 : ).zip(row) {|k,v| row_matrix[k] = v }
      row_matrix
    end
    
    def render_time(star="0", line=" ")
      digits = Time.now.strftime('%H:%M:%S').split('')
      MATRIX.map do |row_matrix|
        row_matrix.values_at(*digits).join(' ')
      end.join("\n").gsub('*', star).gsub('-', line)
    end
    
    loop do
      if RUBY_PLATFORM == "i386-mingw32" then
          system("cls")
      else
          system("tput reset")
      end
      puts render_time
      sleep 1
    end
    Ответить
    • еще короче вот так:
      MATRIX = %W(
       ---** ***** ***** *---* ***** ***** ***** ***** ***** ***** -----
       --*-* ----* ----* *---* *---- *---- ----* *---* *---* *---* -*-*-
       -*--* ----* ----* *---* *---- *---- ---*- *---* *---* *---* -----
       *---* ***** ***** ***** ***** ***** --*-- ***** ***** *---* -----
       ----* *---- ----* ----* ----* *---* -*--- *---* ----* *---* -----
       ----* *---- ----* ----* ----* *---* *---- *---* ----* *---* -*-*-
       ----* ***** ***** ----* ***** ***** *---- ***** ***** ***** -----
      ).each_slice(11).map {|row| Hash[ %W( 1 2 3 4 5 6 7 8 9 0 : ).zip(row) ] }
      Ответить

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

Переведи на "PHP", guest!

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


    8