我想要达到这里使用的效果:Canva注册页面
值得庆幸的是,他们已经给出了一些实现这种效果的步骤:五种视觉效果
这是我到目前为止所取得的成就:
var canvas, ctx,
prevX = 0,
currX = 0,
prevY = 0,
currY = 0;
function init() {
canvas = document.getElementById('log');
ctx = canvas.getContext("2d");
ctx.canvas.width = window.innerWidth;
ctx.canvas.height = window.innerHeight
canvas.onmousemove = function(e) {
currX = e.pageX;
currY = e.pageY;
ctx.beginPath();
ctx.moveTo(prevX, prevY);
ctx.lineTo(currX, currY);
ctx.lineCap = "round";
var d = distance(prevX, prevY, currX, currY);
var w = 80 / d;
ctx.lineWidth = w;
ctx.stroke();
prevX = currX;
prevY = currY;
}
}
function distance(x1, …
Run Code Online (Sandbox Code Playgroud)我必须将数字列表分为两组,以便一组中没有数字的因数也等于第二组中任何数字的因数。我认为我们只需要找出分组,使得每个分组中数字乘积的GCD为1。例如,
如果我们有列表2,3,4,5,6,7,9,则可能的组为-
(2,3,4,6,9)(5,7)(2,3,4,5,6,9)(7)(2,3,4,6,7,9)(5)
我最初想做的是-
在前面的示例中,算法看起来像这样-
我认为该算法有效,但是是解决此问题的非常不好的方法。我可以将素数硬编码为一个大数,然后找到最接近我的最大数的素数,这可能会使其更快,但是如果元素的数量约为10E6或更多,它仍然涉及过多的除法。我在想也许有更好的方法来解决这个问题。也许我缺少一些数学公式,或者一些可以减少迭代次数的小逻辑。
我的问题是关于算法的,因此伪代码也可以使用,我不需要完成的代码。但是,我对Python,Fortran,C,BASH和Octave感到很满意,因此使用这些语言的答案也将有所帮助,但是正如我所说的,语言并不是这里的重点。
而且我想我可能不了解一些可能会使我的问题变得更好的术语,因此也希望对重新措词有所帮助。
我有一个分配有一定值的节点图。我希望在图中找到具有最大节点总数的集团(注意不一定是最大集团)
我想到的一种方法是贪婪算法,该算法是:
但是,这种方法不会导致正确性,因为您可以想象一个图,其中包含一个8个节点,所有节点的值均为1,单个节点的值为7。这里的正确答案是8,而不是7。我的实际问题很复杂图,但以下是一些实际结果和最大笔数的期望结果的示例,这些是我手动找到的:
这是解决方案的一个简单示例:
在不带库的 python中选择的表示形式中,在任意图上使用任意图在python中解决此问题的最佳图形表示形式是什么?
有没有办法将命令行实用程序的输出存储到Fortran中的变量?
我有一个基于BASH的实用程序,它给了我一个需要在Fortran程序中使用的数字.我想通过程序本身调用该实用程序,并尽可能避免将输出写入文件.
这样的事可能吗?
integer a
write(a,*) call execute_command_line('echo 5')
Run Code Online (Sandbox Code Playgroud)
或者像这样呢?
read(call execute_command_line('echo 5'),*) a
Run Code Online (Sandbox Code Playgroud)
我不认为这些都是正确的.我想知道是否有一种方法可以做到这一点.我阅读了文档,execute_command_line
但我不认为子例程有一个输出参数.
我有两个数组,我想比较它们的大小并将尾随零添加到较短的数组。
例如-对于数组-
y1=(/ 1,2,3 /)
y2=(/ 1,2,3,4,5 /)
Run Code Online (Sandbox Code Playgroud)
最后的结果应该是——
y1=(/ 1,2,3,0,0 /)
y2=(/ 1,2,3,4,5 /)
Run Code Online (Sandbox Code Playgroud)
我对 Fortran 很陌生,据我所知,到目前为止,可以这样做:-
integer, allocatable :: y1(:),y2(:)
integer :: l1,l2,i
.
.
.
! some code to generate y1 and y2 here
.
.
.
l1=size(y1)
l2=size(y2)
if (l1>l2) then
do i=l2+1,l1
y2(i)=0
enddo
else if (l2>l1) then
do i=l1+1,l2
y1(i)=0
enddo
endif
Run Code Online (Sandbox Code Playgroud)
我想知道是否有更好的方法来做到这一点,最好是不涉及循环的方法,因为我正在处理的实际问题可能有很大的向量
我想要一个数组从Fortran中的数组中删除某个索引值之后的所有行.这意味着如果数组的大小最初是p,它应该变为q,其中q是索引,之后将删除所有内容.
以下是相关的代码:
real(8), allocatable :: circlesx(:),circlesy(:)
allocate(circlesx(n**2-n))
allocate(circlesy(n**2-n))
do i=1,n-1
do j=i+1,n
call intersect2circles(stlo(i),stla(i),distance(i),stlo(j),stla(j),distance(j),ax,ay,bx,by,flag)
if (flag==0) then
circlesx(k)=ax
circlesy(k)=ay
circlesx(k+1)=bx
circlesy(k+1)=by
k=k+2
endif
enddo
enddo
Run Code Online (Sandbox Code Playgroud)
该标志基本上检查两个圆是否相交.因此,如果没有交集,没有值被分配给阵列circlesx
和circlesy
.我首先分配的数组的大小是n个圆=的最大交点数n^2-n
.如果我不分配它,我会遇到分段错误.
重塑也没有用,虽然我可能在那里做错了.这给出了一个无法分类的陈述错误: -
reshape(circlesx,[ n**2-n-1 ])
Run Code Online (Sandbox Code Playgroud)
我希望圆圈数组的大小k-2
在循环完成后更改为
所以我需要的是,如果n = 2,那么circlex和circley的大小为2,那么,
circlesx=[0,0]
.
.
some calculations
.
.
circlesx=[1.2,0] ! only one value has been allocated
.
.
reshape the array accordingly
.
.
circlesx=[1.2]
Run Code Online (Sandbox Code Playgroud)
在Fortran有什么办法吗?我正在使用f90文件扩展名并使用gfortran v7.3.0
我有一个非常旧的DOS应用程序,我想自动化.就像有按键等,如果自动化会有很多帮助,因为我可能需要手动运行程序一百多次.
我的问题似乎与这个问题非常相似,但那里提供的解决方案对我来说并不是很有用,而且它已经超过九年了
这个问题与我的唯一不同之处在于除了DOSbox之外我没有选择这样做.这个应用程序是在很多计算机上设置的,所有使用该应用程序的人都知道如何使用DOSBox.迁移到Virtualbox将是一件痛苦而且非常耗时的事情.
我想也许我可以使用xautomaton或uinput在python中以某种方式机械化这个,但我还没弄清楚究竟是怎么做的.该应用程序将主要在Ubuntu上运行.
为了了解该应用程序,我附上了一个截图:
解决方案不一定需要在python中.任何其他语言都可以.任何帮助表示赞赏.
这是给我带来问题的简单命令 -
echo hafsda sfsdfdsfs $ymn $ymx $range
Run Code Online (Sandbox Code Playgroud)
此命令的输出即将到来 -
2.568 sfsdfdsfs 86.72
Run Code Online (Sandbox Code Playgroud)
哪里ymn = 86.72
ymx = 89.28
和range = 2.56
。这仅在我使用变量时发生。以下命令工作正常 -
echo hafsda sfsdfdsfs 1 2 $range
Run Code Online (Sandbox Code Playgroud)
此外,如果我尝试直接在终端中运行相同的命令(第一个),则它可以正常工作。这只是一个脚本。我也尝试使用 printf 但遇到了类似的结果。
我什至不明白用谷歌来解决这个问题。我根本无法理解发生了什么。那么,这里发生了什么?这是可重现的还是只是我系统上的一些错误,如果是,可能是什么问题?