Rust Implementation of Problem 24

View source code here on GitHub!

Problem Solution

pub fn problems::p0024::p0024() -> utils::Answer
 1/*
 2Project Euler Problem 24
 3
 4This one was fairly easy for code golf, thanks to the port of Python's itertools
 5
 6Problem:
 7
 8A permutation is an ordered arrangement of objects. For example, 3124 is one
 9possible permutation of the digits 1, 2, 3 and 4. If all of the permutations
10are listed numerically or alphabetically, we call it lexicographic order. The
11lexicographic permutations of 0, 1 and 2 are:
12
13012   021   102   120   201   210
14
15What is the millionth lexicographic permutation of the digits 0, 1, 2, 3, 4,
165, 6, 7, 8 and 9?
17*/
18use itertools::Itertools;
19
20use crate::include::utils::Answer;
21
22pub fn p0024() -> Answer {
23    return Answer::Int(
24        (0..10)
25            .permutations(10)
26            .nth(999999)
27            .unwrap()
28            .into_iter()
29            .map(|y| y.to_string())
30            .fold("".to_owned(), |y, z| y + &z)
31            .parse::<i128>()
32            .unwrap()
33    );
34}

Tags: permutation, lexicographic-ordering, combinatorics