这个F#代码试图解决Project Euler问题#58:
let inc = function
| n -> n + 1
let is_prime = function
| 2 -> true
| n when n < 2 || n%2=0-> false
| n ->
[3..2..(int (sqrt (float n)))]
|> List.tryFind (fun i -> n%i=0)
|> Option.isNone
let spir = Seq.initInfinite (fun i ->
let n = i%4
let a = 2 * (i/4 + 1)
(a*n) + a + (a-1)*(a-1))
let rec accum se p n =
match se with …Run Code Online (Sandbox Code Playgroud) 我正在尝试用 Rust解决这个问题。
这是我的非编译 Rust 代码:
use std::collections::HashMap;
fn main() {
// initialize HashMap
let mut fibs: HashMap<u32, u32> = HashMap::new();
fibs.insert(0, 1);
fibs.insert(1, 1);
let mut n = 1;
let mut sum = 0;
while fib(n, &mut fibs) < 4000000 {
sum += if fib(n, &mut fibs) % 2 == 0 {
fib(n, &mut fibs)
} else {
0
};
n += 1;
}
println!("{}", sum);
}
fn fib(n: u32, fibs: &mut HashMap<u32, u32>) -> u32 {
if !fibs.contains_key(&n) …Run Code Online (Sandbox Code Playgroud) 我最近从这个站点(Linux 64 位)下载并解压了 Rust 语言。
然后我使用下载中的给定脚本安装了 Rust install.sh:
root@kali:~# /root/rust-1.9.0-x86_64-unknown-linux-gnu/install.sh
install: uninstalling component 'rustc'
install: creating uninstall script at /usr/local/lib/rustlib/uninstall.sh
install: installing component 'rustc'
install: installing component 'rust-std-x86_64-unknown-linux-gnu'
install: installing component 'rust-docs'
install: installing component 'cargo'
Rust is ready to roll.
Run Code Online (Sandbox Code Playgroud)
我正在尝试安装带有货物的板条箱,但我一直遇到此错误:
root@kali:~# cargo install racer
Updating registry `https://github.com/rust-lang/crates.io-index`
Compiling winapi v0.2.7
Compiling bitflags v0.5.0
error: can't find crate for `std` [E0463]
error: aborting due to previous error
Build failed, waiting for other jobs to finish...
error: …Run Code Online (Sandbox Code Playgroud) 我正在练习面试并在网站上遇到这个问题:
字符串的神奇子序列
S是按顺序S包含所有五个元音的子序列.找到字符串最大的魔法子序列的长度S.例如,如果
S = aeeiooua,然后aeiou和aeeioou是神奇的子序列,但aeio并aeeioua不是.
我是动态编程的初学者,我发现很难想出一个递归的公式.
这就是问题所在:给定块数 n(3 到 200 之间),返回可以建造的不同楼梯的数量。每种类型的楼梯应包含 2 个或更多台阶。不允许有两个台阶处于相同高度 - 每个台阶必须低于前一个台阶。所有台阶必须至少包含一块砖块。台阶的高度被分类为组成该台阶的砖块的总数。
例如,当N = 3时,您只有1种选择如何建造楼梯,第一步的高度为2,第二步的高度为1:(#表示一块砖)
#
##
21
Run Code Online (Sandbox Code Playgroud)
当 N = 4 时,你仍然只有 1 个楼梯选择:
#
#
##
31
Run Code Online (Sandbox Code Playgroud)
但是当 N = 5 时,有两种方法可以用给定的砖块建造楼梯。两个楼梯的高度可以为 (4, 1) 或 (3, 2),如下所示:
#
#
#
##
41
#
##
##
32
Run Code Online (Sandbox Code Playgroud)
我在网上找到了解决方案,但是我不太直观地理解动态规划的解决方案。
public class Answer {
static int[][] p = new int[201][201];
public static void fillP() {
p[1][1] = 1;
p[2][2] = 1;
for (int w = 3; w < 201 ; w++) {
for (int …Run Code Online (Sandbox Code Playgroud) 在Java中,让我们说我有一个整数数组:int[] a = {1, 2, 3, 4, 5};。如果我想更改数组中的某个元素,可以通过更改内存中某个地址处的数据来实现:a[2] = 9;=> {1, 2, 9, 4, 5}。
在Clojure中,我能有一个向量:(def a [1 2 3 4 5])。如何在保证最坏情况时间复杂度为 O(1) 的情况下更改向量中某个位置的元素?我读过该assoc关键字的平均时间复杂度为 O(1),但这不是我要找的。另外,我查看了瞬态向量,但我还没有找到一个很好的简单示例来更新 O(1) 中的向量。
performance functional-programming vector clojure time-complexity
algorithm ×2
performance ×2
rust ×2
c++ ×1
clojure ×1
f# ×1
java ×1
math ×1
memoization ×1
pointers ×1
rust-cargo ×1
vector ×1