Ruby|Gviz로 신축성 체형 풍미의 유방향도 제작

5699 단어 GraphvizRuby

Ruby|Gviz로 신축성 체형 풍미의 유방향도 제작


개요


지비즈로 신축성 체형 풍미의 유방향도를 만들어 보세요.
논리 자체가 결코 탄력적인 체가 되지 않았다
출력된 이미지에서 탄성체 체를 연상하다.

규격.

  • N개의 소수를 얻어'제1항 N1·교차 N1의 수열, 제1항 N2·교차 N2의 수열, 제1항 N-last·교차 N-last의 수열'을 만드는 Enumerator 배열
  • 도표화의 범위는max 변수로 설정됩니다.
  • 도표에 1부터 max까지의 모든 숫자를 표시한다
  • 등차수열에 포함된 수치는 수열의 순서에 따라 edge를 설정하여 유방향도
  • 로 표시한다
  • 1 빨간색으로 표시
  • 소수는 노란색으로 표시
  • 합성수는 파란색으로 표시
  • 마지막 수량을 녹색으로 표시
  • 절차.

    require "gviz"
    require "prime"
    
    def arithmetic_progression_enum(base)
      Enumerator.new do |y|
        i = 0
        loop do
          y << i + base
          i += base
        end
      end
    end
    
    bases = *Prime.each(5)
    arithmetic_progressions = Prime.each(5).with_object([]) do |prime, memo|
      memo << arithmetic_progression_enum(prime)
    end
    
    max = 30
    Graph do
      global layout:'neato', label:'Arithmetic progression', fontsize:54, size:15
      nodes shape:'circle', style:'filled', fillcolor: :yellow
    
      (1..max).each { |i| node :"#{i}" }
    
      arithmetic_progressions.each_with_index do |e, i|
        e.take(max/bases[i]).each_cons(2).with_index do |e, j|
          route Hash[*e]
          node :"#{e.last}", { style: :filled, fillcolor: :skyblue }
        end
      end
    
      save :arithmetic_progression, :png
    end
    

    출력 예 1

  • max = 20
  • Primes => 2, 3, 5

  • 출력 예2

  • max = 100
  • Primes => 2, 3, 5, 7, 11, 13, 17, 19
  • 좋은 웹페이지 즐겨찾기