我需要将输入字符串拆分成许多部分.拆分应该出现在"\n"(字面意思是反斜杠-n,而不是换行符).我想转此:
x = [2,0,5,5]\ny = [0,2,4,4]\ndraw y #0000ff\ny = y & x\ndraw y #ff0000
Run Code Online (Sandbox Code Playgroud)
进入这个:
x = [2,0,5,5]
y = [0,2,4,4]
draw y #0000ff
y = y & x
draw y #ff0000
Run Code Online (Sandbox Code Playgroud)
我原本以为stringArray = string.split("\n");这就足够了.
但它在以下代码中给出了与输入相同的输出:
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.print("Enter Input\n");
String s = br.readLine();
NewInterpreter interpreter = new NewInterpreter(s);
interpreter.run();
}
public NewInterpreter(String input) {
this.input = input;
this.index = 0;
this.inputComponents = input.split("\n");
System.out.println("Output: ");
for(String …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用PyOpt运行一些并行优化.棘手的部分是在我的目标函数中,我想使用mpi运行C++代码.
我的python脚本如下:
#!/usr/bin/env python
# Standard Python modules
import os, sys, time, math
import subprocess
# External Python modules
try:
from mpi4py import MPI
comm = MPI.COMM_WORLD
myrank = comm.Get_rank()
except:
raise ImportError('mpi4py is required for parallelization')
# Extension modules
from pyOpt import Optimization
from pyOpt import ALPSO
# Predefine the BashCommand
RunCprogram = "mpirun -np 2 CProgram" # Parallel C++ program
#########################
def objfunc(x):
f = -(((math.sin(2*math.pi*x[0])**3)*math.sin(2*math.pi*x[1]))/((x[0]**3)*(x[0]+x[1])))
# Run CProgram
os.system(RunCprogram) #where the mpirun call occurs
g = [0.0]*2 …Run Code Online (Sandbox Code Playgroud) 我有这样的数据:
x = [23, 25, 28, 29, ...]
y = [25, 38, 38, 28, ...]
Run Code Online (Sandbox Code Playgroud)
现在,我可以用点绘制点数 plot(x, y, '.r');
我按时间顺序收集上面的点数据,现在,我想用一条线连接点,这样我就可以看到哪一个是特定点的下一个点.
让Y是长度的矢量N,从包含数字1到10.作为示例代码,您可以使用:
Y = vec(1:10);
Run Code Online (Sandbox Code Playgroud)
我正在编写必须创建N x 10矩阵的代码,每行由全零组成,除了1仅在与向量中的数字对应的位置Y.因此,1在Y变10000000000,3变0010000000,等等.
这种方法有效:
cell2mat(arrayfun(@(x)eye(10)(x,:), Y, 'UniformOutput', false))
Run Code Online (Sandbox Code Playgroud)
我的下一个想法是"优化",所以eye(10)不是生成N时间,我写了这个:
theEye = eye(10);
cell2mat(arrayfun(@(x)theEye(x,:), Y, 'UniformOutput', false))
Run Code Online (Sandbox Code Playgroud)
但是,现在Octave给了我错误:
error: can't perform indexing operations for diagonal matrix type
error: evaluating argument list element number 1
Run Code Online (Sandbox Code Playgroud)
为什么我会收到此错误?怎么了?
奖金问题 - 您是否看到了更好的方式来做我正在做的事情?我是否尝试优化Octave的制作工作?
首先,我甚至不确定术语是否正确,因为我没有找到类似的东西(特别是因为我甚至不知道要使用哪些关键字)
问题: 有一群人,我想把他们分成小组.我有一套规则可以为每个作业分配一个分数.我想找到最好的一个(或者至少是一个非常好的).
例如,如果人口为4,{A,B,C,D}并分配给两组,则可能的分配是:
{A,B},{C,D}
{A,C},{B,D}
{A,D},{B,C}
Run Code Online (Sandbox Code Playgroud)
例如,{B,A},{C,D}并且{C,D},{A,B}它们都与第一个相同(我不关心组内的顺序和组本身的顺序).
人数,群体数量以及每个群体中适合的人数都是投入.
我的想法是列出每个可能的分配,计算他们的分数并跟踪最好的分配.也就是说,蛮力.由于人口可能很大,我想以随机顺序浏览它们并返回时间用完时找到的最好的一个(可能是当用户感到无聊或认为它是一个足够好的发现时).人口可以从非常小(列出的四个)到非常大(可能超过200个)变化,所以只是尝试随机的而不关心重复与小的一起分解,在那里可能有蛮力(加上我不知道什么时候)如果我使用普通随机排列,则停止).
人口足够大,列出能够改组它们的所有分配都不适合记忆.所以我需要一个方法来以随机顺序查找所有可能的赋值,或者一个方法,给定一个索引,生成相应的赋值,并使用索引数组和shuffle(第二个会更好因为我可以很容易将任务分配到多个服务器中).
情况是我有一个阻塞管道或套接字 fd,我不想write()阻塞,所以我先做了select()一个,但这仍然不能保证write()不会阻塞。
这是我收集的数据。即使select()指示可以写入,写入的PIPE_BUF字节数也会阻塞。然而,写入最多PIPE_BUF字节在实践中似乎不会阻塞,但POSIX 规范并未强制要求。
那只指定原子行为。Python(!) 文档指出:
报告为准备写入的文件
select(),poll()或此模块中的类似接口保证不会在写入最多PIPE_BUF字节时阻塞。POSIX 保证该值至少为512.
在下面的测试程序中,设置BUF_BYTES为100000在write()成功选择后在 Linux、FreeBSD 或 Solaris 上阻塞
。我假设命名管道与匿名管道具有相似的行为。
不幸的是,阻塞套接字也会发生同样的情况。通话
test_socket()中main(),并使用一个相当大的BUF_BYTES(100000好这里太)。目前尚不清楚是否有像PIPE_BUF套接字一样的安全缓冲区大小
。
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <limits.h>
#include <stdio.h> …Run Code Online (Sandbox Code Playgroud) 我正在阅读Robert Sedgewick的书Algorithms第4版,他有以下练习题:当使用quicksort对具有不同键的N个项目的数组进行排序时,大小为0,1和2的子数组的预期数量是多少?
然后他说,如果你在数学上有倾向,做数学,如果没有,运行实验,我已经进行了实验,看起来大小为0和1的数组具有完全相同的出现次数和大小为2的数组只有一半是发生的.
有问题的quicksort版本是具有双向分区的版本.
据我所知,当分区项是子数组中最小/最大的分区项时,我们得到大小为0的子数组,因此后续的2个排序调用将是
sort(a, lo, j-1); // here if j-1 < lo, we have an array of size 0
sort(a, j+1, hi); // here if j+1 > hi, we have an array of size 0
Run Code Online (Sandbox Code Playgroud)
当分区项目是第2个到第一个最小/最大项目时,大小为1的数组发生,当它是第3个到第一个最小/最大项目时,大小为2.
那么,我究竟如何得出一个数学公式呢?
这是C#中的代码
class QuickSort
{
private static int zero = 0, one = 0, two = 0;
private static int Partition<T>(T[] a, int lo, int hi) where T : IComparable<T>
{
T v = a[lo];
int i = …Run Code Online (Sandbox Code Playgroud) 我想plot.m在 Octave 中使用一个简单的代码 ( ) 来绘制图形。我的代码如下:
printf('Plotting Data...\n');
x = -10:0.1:10;
plot(x, sin(x));
Run Code Online (Sandbox Code Playgroud)
但我收到错误消息:
错误:在索引表达式中无效使用脚本 ex1/plot.m 错误:从第 3 行第 1 列的绘图中调用
你能告诉我如何解决吗?谢谢!
我是 Octave 的新手,所以在转向更复杂的项目之前,我试图让一些简单的示例发挥作用。
我正在尝试解决 ODE 问题dy/dx = a*x+b,但没有成功。这是代码:
%Funzione retta y = a*x + b. Ingressi: vettore valori t; coefficienti a,b
clear all;
%Inizializza argomenti
b = 1;
a = 1;
x = ones(1,20);
function y = retta(a, x, b) %Definisce funzione
y = ones(1,20);
y = a .* x .+ b;
endfunction
%Calcola retta
x = [-10:10];
a = 2;
b = 2;
r = retta(a, x, b)
c = b;
p1 = (a/2)*x.^2+b.*x+c %Sol. analitica di …Run Code Online (Sandbox Code Playgroud) 我有一个Shape类,在这个类中有一个叫做的方法getRepr()可以得到char一个形状的表示.例如,
ShapeA.getRepr() ->'a'
ShapeB.getRepr() ->'b'
ShapeC.getRepr() ->'c'
Run Code Online (Sandbox Code Playgroud)
现在我有一个ArrayList存储几个形状,包括ShapeE,ShapeA,ShapeD,ShapeC,和ShapeB.
现在的问题是我如何使用Collections.sort(),以字母顺序重新排列这些形状在ArrayList根据自己的char陈述?
预期的结果在这个ArrayList排序后应ShapeA,ShapeB,ShapeC,ShapeD,ShapeE.
或者有没有办法达到这个目的没有Collections.sort()?