Compare commits
No commits in common. "485252a76fe0957184014df55eb27f42c2d00a26" and "418484b415df6033f10c62a746fa287e78044e1e" have entirely different histories.
485252a76f
...
418484b415
7 changed files with 0 additions and 256 deletions
|
|
@ -1,37 +0,0 @@
|
||||||
{
|
|
||||||
"authors": [
|
|
||||||
"sacherjj"
|
|
||||||
],
|
|
||||||
"contributors": [
|
|
||||||
"attilahorvath",
|
|
||||||
"cbzehner",
|
|
||||||
"coriolinus",
|
|
||||||
"cwhakes",
|
|
||||||
"eddyp",
|
|
||||||
"efx",
|
|
||||||
"ErikSchierboom",
|
|
||||||
"imbolc",
|
|
||||||
"lutostag",
|
|
||||||
"nfiles",
|
|
||||||
"petertseng",
|
|
||||||
"rofrol",
|
|
||||||
"stringparser",
|
|
||||||
"xakon",
|
|
||||||
"ZapAnton"
|
|
||||||
],
|
|
||||||
"files": {
|
|
||||||
"solution": [
|
|
||||||
"src/lib.rs",
|
|
||||||
"Cargo.toml"
|
|
||||||
],
|
|
||||||
"test": [
|
|
||||||
"tests/nth_prime.rs"
|
|
||||||
],
|
|
||||||
"example": [
|
|
||||||
".meta/example.rs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"blurb": "Given a number n, determine what the nth prime is.",
|
|
||||||
"source": "A variation on Problem 7 at Project Euler",
|
|
||||||
"source_url": "https://projecteuler.net/problem=7"
|
|
||||||
}
|
|
||||||
2
rust/nth-prime/.gitignore
vendored
2
rust/nth-prime/.gitignore
vendored
|
|
@ -1,2 +0,0 @@
|
||||||
/target
|
|
||||||
Cargo.lock
|
|
||||||
|
|
@ -1,9 +0,0 @@
|
||||||
[package]
|
|
||||||
name = "nth_prime"
|
|
||||||
version = "0.1.0"
|
|
||||||
edition = "2024"
|
|
||||||
|
|
||||||
# Not all libraries from crates.io are available in Exercism's test runner.
|
|
||||||
# The full list of available libraries is here:
|
|
||||||
# https://github.com/exercism/rust-test-runner/blob/main/local-registry/Cargo.toml
|
|
||||||
[dependencies]
|
|
||||||
|
|
@ -1,89 +0,0 @@
|
||||||
# Help
|
|
||||||
|
|
||||||
## Running the tests
|
|
||||||
|
|
||||||
Execute the tests with:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
$ cargo test
|
|
||||||
```
|
|
||||||
|
|
||||||
All but the first test have been ignored. After you get the first test to
|
|
||||||
pass, open the tests source file which is located in the `tests` directory
|
|
||||||
and remove the `#[ignore]` flag from the next test and get the tests to pass
|
|
||||||
again. Each separate test is a function with `#[test]` flag above it.
|
|
||||||
Continue, until you pass every test.
|
|
||||||
|
|
||||||
If you wish to run _only ignored_ tests without editing the tests source file, use:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
$ cargo test -- --ignored
|
|
||||||
```
|
|
||||||
|
|
||||||
If you are using Rust 1.51 or later, you can run _all_ tests with
|
|
||||||
|
|
||||||
```bash
|
|
||||||
$ cargo test -- --include-ignored
|
|
||||||
```
|
|
||||||
|
|
||||||
To run a specific test, for example `some_test`, you can use:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
$ cargo test some_test
|
|
||||||
```
|
|
||||||
|
|
||||||
If the specific test is ignored, use:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
$ cargo test some_test -- --ignored
|
|
||||||
```
|
|
||||||
|
|
||||||
To learn more about Rust tests refer to the online [test documentation][rust-tests].
|
|
||||||
|
|
||||||
[rust-tests]: https://doc.rust-lang.org/book/ch11-02-running-tests.html
|
|
||||||
|
|
||||||
## Submitting your solution
|
|
||||||
|
|
||||||
You can submit your solution using the `exercism submit src/lib.rs Cargo.toml` command.
|
|
||||||
This command will upload your solution to the Exercism website and print the solution page's URL.
|
|
||||||
|
|
||||||
It's possible to submit an incomplete solution which allows you to:
|
|
||||||
|
|
||||||
- See how others have completed the exercise
|
|
||||||
- Request help from a mentor
|
|
||||||
|
|
||||||
## Need to get help?
|
|
||||||
|
|
||||||
If you'd like help solving the exercise, check the following pages:
|
|
||||||
|
|
||||||
- The [Rust track's documentation](https://exercism.org/docs/tracks/rust)
|
|
||||||
- The [Rust track's programming category on the forum](https://forum.exercism.org/c/programming/rust)
|
|
||||||
- [Exercism's programming category on the forum](https://forum.exercism.org/c/programming/5)
|
|
||||||
- The [Frequently Asked Questions](https://exercism.org/docs/using/faqs)
|
|
||||||
|
|
||||||
Should those resources not suffice, you could submit your (incomplete) solution to request mentoring.
|
|
||||||
|
|
||||||
## Rust Installation
|
|
||||||
|
|
||||||
Refer to the [exercism help page][help-page] for Rust installation and learning
|
|
||||||
resources.
|
|
||||||
|
|
||||||
## Submitting the solution
|
|
||||||
|
|
||||||
Generally you should submit all files in which you implemented your solution (`src/lib.rs` in most cases). If you are using any external crates, please consider submitting the `Cargo.toml` file. This will make the review process faster and clearer.
|
|
||||||
|
|
||||||
## Feedback, Issues, Pull Requests
|
|
||||||
|
|
||||||
Head to [the forum](https://forum.exercism.org/c/programming/rust/) and create a post to provide feedback about an exercise or if you want to help implement new exercises.
|
|
||||||
Members of the rust track team are happy to help!
|
|
||||||
|
|
||||||
The GitHub [track repository][github] is the home for all of the Rust exercises.
|
|
||||||
|
|
||||||
If you want to know more about Exercism, take a look at the [contribution guide].
|
|
||||||
|
|
||||||
## Submitting Incomplete Solutions
|
|
||||||
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
|
||||||
|
|
||||||
[help-page]: https://exercism.org/tracks/rust/learning
|
|
||||||
[github]: https://github.com/exercism/rust
|
|
||||||
[contribution guide]: https://exercism.org/docs/community/contributors
|
|
||||||
|
|
@ -1,42 +0,0 @@
|
||||||
# Nth Prime
|
|
||||||
|
|
||||||
Welcome to Nth Prime on Exercism's Rust Track.
|
|
||||||
If you need help running the tests or submitting your code, check out `HELP.md`.
|
|
||||||
|
|
||||||
## Instructions
|
|
||||||
|
|
||||||
Given a number n, determine what the nth prime is.
|
|
||||||
|
|
||||||
By listing the first six prime numbers: 2, 3, 5, 7, 11, and 13, we can see that the 6th prime is 13.
|
|
||||||
|
|
||||||
If your language provides methods in the standard library to deal with prime numbers, pretend they don't exist and implement them yourself.
|
|
||||||
|
|
||||||
Remember that while people commonly count with 1-based indexing (i.e. "the 6th prime is 13"), many programming languages, including Rust, use 0-based indexing (i.e. `primes[5] == 13`). Use 0-based indexing for your implementation.
|
|
||||||
|
|
||||||
## Source
|
|
||||||
|
|
||||||
### Created by
|
|
||||||
|
|
||||||
- @sacherjj
|
|
||||||
|
|
||||||
### Contributed to by
|
|
||||||
|
|
||||||
- @attilahorvath
|
|
||||||
- @cbzehner
|
|
||||||
- @coriolinus
|
|
||||||
- @cwhakes
|
|
||||||
- @eddyp
|
|
||||||
- @efx
|
|
||||||
- @ErikSchierboom
|
|
||||||
- @imbolc
|
|
||||||
- @lutostag
|
|
||||||
- @nfiles
|
|
||||||
- @petertseng
|
|
||||||
- @rofrol
|
|
||||||
- @stringparser
|
|
||||||
- @xakon
|
|
||||||
- @ZapAnton
|
|
||||||
|
|
||||||
### Based on
|
|
||||||
|
|
||||||
A variation on Problem 7 at Project Euler - https://projecteuler.net/problem=7
|
|
||||||
|
|
@ -1,48 +0,0 @@
|
||||||
const PRIME_LEN: usize = 10_010;
|
|
||||||
const LIMIT: usize = 106_000;
|
|
||||||
|
|
||||||
struct PrimeCache {
|
|
||||||
primes: [u32; PRIME_LEN],
|
|
||||||
}
|
|
||||||
|
|
||||||
impl PrimeCache {
|
|
||||||
const fn new() -> Self {
|
|
||||||
let mut primes = [0; PRIME_LEN];
|
|
||||||
let mut sieve = [true; LIMIT];
|
|
||||||
|
|
||||||
sieve[0] = false;
|
|
||||||
sieve[1] = false;
|
|
||||||
|
|
||||||
let mut i = 2;
|
|
||||||
while i * i < LIMIT {
|
|
||||||
if sieve[i] {
|
|
||||||
let mut j = i * i;
|
|
||||||
while j < LIMIT {
|
|
||||||
sieve[j] = false;
|
|
||||||
j += i;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
i += 1;
|
|
||||||
}
|
|
||||||
let mut num = 0;
|
|
||||||
let mut j = 0;
|
|
||||||
while num < LIMIT && j < PRIME_LEN {
|
|
||||||
if sieve[num] {
|
|
||||||
primes[j] = num as u32;
|
|
||||||
j += 1;
|
|
||||||
}
|
|
||||||
num += 1;
|
|
||||||
}
|
|
||||||
Self { primes }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static CACHE: PrimeCache = PrimeCache::new();
|
|
||||||
|
|
||||||
pub fn nth(n: u32) -> u32 {
|
|
||||||
let nth = n as usize;
|
|
||||||
if nth >= PRIME_LEN {
|
|
||||||
panic!("N more than comptime was calculated");
|
|
||||||
}
|
|
||||||
CACHE.primes[nth]
|
|
||||||
}
|
|
||||||
|
|
@ -1,29 +0,0 @@
|
||||||
use nth_prime::*;
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn first_prime() {
|
|
||||||
let output = nth(0);
|
|
||||||
let expected = 2;
|
|
||||||
assert_eq!(output, expected);
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn second_prime() {
|
|
||||||
let output = nth(1);
|
|
||||||
let expected = 3;
|
|
||||||
assert_eq!(output, expected);
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn sixth_prime() {
|
|
||||||
let output = nth(5);
|
|
||||||
let expected = 13;
|
|
||||||
assert_eq!(output, expected);
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn big_prime() {
|
|
||||||
let output = nth(10_000);
|
|
||||||
let expected = 104_743;
|
|
||||||
assert_eq!(output, expected);
|
|
||||||
}
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue