Опишем простую процедуру. Выберем натуральное число N от 1 до 99 и сопоставим ему число, равное количеству букв в записи N в виде слова какого-то языка. Для полученного числа снова повторим эту операцию. Для русского языка получается довольно симпатичное дерево, в котором есть три цикла 3→3, 11→11 и 6→5→4→6.

Интересно, что в английском языке не более, чем за пять шагов мы придем к 4 и зациклимся.
Вот пример короткого кода на Ruby, производящего нужный нам граф для английского языка

Аналогично устроен код для французского языка
В этом случае мы приходим к циклу 5→4→6→3→5.


Интересно, что в английском языке не более, чем за пять шагов мы придем к 4 и зациклимся.
Вот пример короткого кода на Ruby, производящего нужный нам граф для английского языка
require 'humanize'
require 'rgl/adjacency'
require 'rgl/dot'
result = RGL::DirectedAdjacencyGraph.new
1.upto(99) { |i|
result.add_edge(i.to_s, i.humanize(locale: :en).length.to_s)
}
result.dotty

Аналогично устроен код для французского языка
result = RGL::DirectedAdjacencyGraph.new
1.upto(99) { |i|
result.add_edge(i.to_s, i.humanize(locale: :fr).length.to_s)
}
result.dotty
В этом случае мы приходим к циклу 5→4→6→3→5.
