小编Dra*_*mes的帖子

Scala中的一个更大的循环

我正在使用Scala来创建一个程序,但我正在试验一个循环可以做多少迭代的墙.在Scala中进行函数式编程和编程时,我仍然很新,但这就是我现在所拥有的:

val s = Range(1, 999999999).view.foldLeft(0)(_ + _ / whatever);
Run Code Online (Sandbox Code Playgroud)

但我不能让循环说比999999999大几个数量级,比如说长的最大值.我知道我可以使用for循环,但我无法看到折叠选项.

谁知道如何实现这一目标?

谢谢.

functional-programming scala folding

4
推荐指数
2
解决办法
1095
查看次数

重新分配一个int数组

我正在尝试创建一个数组来保存一个int,然后当要添加另一个int时,增加它的大小以容纳另一个int ..依此类推..

我知道这不是realloc的有效使用,但它更能证明概念.只是让它工作将允许我优化它并能够将它应用于有用的东西.一个工作的例子.当我调用print函数时,问题就来了,它只是段错误.任何帮助,将不胜感激.

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <string.h>

typedef char String[100];

void begin(int *);
void add(int *, int);
void print(int *);

int tempcount=0;

int main(void)
{
    int *n=NULL;
    String menu;

    begin(n);

    while(true)
    {
        scanf("%9s", menu);

        if(!strcmp("a", menu)) //add
        {
            int i=0;
            scanf("%d", &i);
            add(n, i);
        }
        else if(!strcmp("p", menu)) //print
        {
            print(n);
        }
        else if(!strcmp("q", menu)) //quit
        {
            free(n);
            break;
        }

    }

    return 0;
}

void begin(int *n)
{
    n=malloc(sizeof(int));

    if(n==NULL)
    {
        printf("Error in malloc!");
        return;
    } …
Run Code Online (Sandbox Code Playgroud)

c malloc realloc segmentation-fault

3
推荐指数
1
解决办法
1万
查看次数

词典排列

我一直在研究Project Euler 问题24并且遇到了Scala的解决方案(无论如何我试图解决它的语言).我原本打算自己做,但现在我发现这个解决方案是如何工作的.

问题:

字典排列0,1和2是:

012,021,102,120,201和210.

数字0,1,2,3,4,5,6,7,8和9的百万次词典排列是多少?

解决方案:

def permutations(s : String) : Seq[String] =
{
  if(s.size == 1)
    Seq(s);
  else
    s.flatMap(x => permutations(s.filterNot(_ == x)).map(x +));
}

val ans = permutations("0123456789")(1000000 - 1).toLong;

println(ans);
Run Code Online (Sandbox Code Playgroud)

functional-programming scala permutation

3
推荐指数
1
解决办法
575
查看次数