Skip to content

Instantly share code, notes, and snippets.

@lovasoa
Created May 29, 2020 17:40
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lovasoa/712716cf3be66c5487faf405c91d65e6 to your computer and use it in GitHub Desktop.
Save lovasoa/712716cf3be66c5487faf405c91d65e6 to your computer and use it in GitHub Desktop.
use std::collections::BinaryHeap;
use std::collections::HashSet;
use std::cmp::Reverse;
fn main() {
println!("strict digraph {{");
let mut v : BinaryHeap<(Reverse<u128>, u8)> = Default::default();
let mut visited : HashSet<u128> = Default::default();
v.push((Reverse(1), 0));
while let Some((Reverse(c), n)) = v.pop() {
if visited.contains(&c) { continue }
visited.insert(c);
let a = [
Some(2*c),
if c>1 && (c-1)%3 == 0 && ((c-1)/3)%2==1 { Some((c-1)/3) }
else { None}
];
for &i in a.iter().flatten() {
if n < 20 { v.push((Reverse(i), n+1)); }
println!("{} -> {}", i, c);
println!("{} [shape=circle, style=filled, fillcolor=\"/spectral11/{}\"]", c, 1 + (((c/9) as f64).ln() as u32));
}
}
println!("}}");
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment