标签: modulo

Ruby/Rails:从数组中获取索引可被x整除的元素

我怎么能实现这个?我认为我的解决方案很脏,我想做得更好.我认为在Ruby中有一种简单的方法可以做到这一点,但我不记得了.我想在Rails中使用它,所以如果Rails提供类似的东西也可以.用法应该是这样的:

fruits = ['banana', 'strawberry', 'kiwi', 'orange', 'grapefruit', 'lemon', 'melon']

# odd_fruits should contain all elements with odd indices (index % 2 == 0)
odd_fruits = array_mod(fruits, :mod => 2, :offset => 0)

# even_fruits should contain all elements with even indices (index % 2 == 1)
even_fruits = array_mod(fruits, :mod => 2, :offset => 1)

puts odd_fruits
  banana
  kiwi
  grapefruit
  melon

puts even_fruits
  strawberry
  orange
  lemon
Run Code Online (Sandbox Code Playgroud)

*******编辑*******

对于那些想知道的人,这就是我最终做到的:

在rails项目中,我创建了一个新文件config/initializers/columnize.rb,如下所示:

class Array
  def columnize args = { :columns …
Run Code Online (Sandbox Code Playgroud)

ruby arrays ruby-on-rails modulo

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

如何使用mod运算符包装数字

不确定这是否可行,但有一种自动方式,使用mod或类似的东西,自动纠正错误的输入值?例如:

If r>255, then set r=255 and
if r<0, then set r=0
Run Code Online (Sandbox Code Playgroud)

所以基本上我要问的是一个聪明的数学方法来设置它而不是使用

if(r>255)
 r=255;
if(r<0)
 r=0;
Run Code Online (Sandbox Code Playgroud)

algorithm modulo

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

帮助尝试理解圆形阵列中的模运算

我有一个小问题试图弄清楚模运算是如何计算的。我正在建立一个队列,所以我有一个循环数组。我无法弄清楚这个模运算是如何工作的。

给定 q:一个长度为 5 个元素的字符数组,MAX 常量给出了数组的最大长度 "5" 罕见是一个整数,它表示数组 q 中的第一个可用位置

    public void enqueue(Character c)throws FullQueueException{

    if(size()== MAX -1){ //if only 1 place left, is full, throw exc 

        throw new FullQueueException("Queue is full");
    }
    q[rare]=c;  
    rare=(rare+1)%MAX;
}
Run Code Online (Sandbox Code Playgroud)

现在,假设稀有的“第一个空位”是 3,那么方法完成后稀有值是多少?这是我没有得到的,rare=(rare+1)%MAX 表示rare=4%5,这给出了rare=0,8。

方法大小相同:

public int size() {

    return (MAX - front + rear) % MAX;
}
Run Code Online (Sandbox Code Playgroud)

给定,front,一个表示数组中第一个元素的 int 变量假设前面是 1 和罕见的 4,所以数组中有 3 个元素,所以大小是 (5-1+4)%5 也就是 8%5给出 1.6,而实际大小是 3 有什么建议吗?这可能比 java 更数学,但可能你们中的一些人之前遇到过同样的疑问。谢谢!

java arrays queue modulo

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

当值在十亿或更大时,VBA 中的 Mod 溢出错误

我试图找到一个数 x 的最大素数除数。当 x 小于 10 亿时,我的代码可以工作,但是当它大于 10 亿时,它会出现溢出错误,并且调试会突出显示其中包含 Mod 的行。

 Sub Largest_Divisor()
    Dim x As Double
    Dim Q As Integer
    Q = 0
    Dim L() As Double
    x = 999999999#
    Dim i As Double
    For i = 775145 To 3 Step -2
        If x Mod i = 0 Then
            If IsPrime(i) Then
                ReDim Preserve L(Q) As Double
                L(Q) = i
                Q = Q + 1
            End If
        End If
    Next i
    MsgBox (Application.Max(L))
 End Sub
Run Code Online (Sandbox Code Playgroud)

excel vba modulo

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

为什么Python不应该返回False语句?

以此代码为例:

print 2.0 == 2 #---> returns True

print 12 % 5 #---> returns 2
print ((12.0 / 5) - (12 / 5)) * 5 #---> returns 2.0

print ((12.0 / 5) - (12 / 5)) * 5 == 12 % 5 #---> returns False (What the hell happens here?)
Run Code Online (Sandbox Code Playgroud)

python equals modulo

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

Python模数与余数相同?

在Python文档它说:" %(模)运算符产生了由第二的第一个参数的除法的余数. "

所以给定

a % b
Run Code Online (Sandbox Code Playgroud)

据我所知,剩余部分是将A除以B均匀分开的数字.所以21%3 = 0,-25%23 = -2.我不明白的是当A为负时会发生什么.

例如,

-23 % 22
Run Code Online (Sandbox Code Playgroud)

会产量

21
Run Code Online (Sandbox Code Playgroud)

这是第一个正整数,它是一致的模数-1.但-1是剩余的-23%22.那么文档错了吗?Python中的模运算符%不会产生%b中的余数,而是与B一致的第一个正整数?我很困惑.

python modulo

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

在 C 中使用带有指针的模运算符

如果我有一个 char 指针,char *ptr它保存单个 ascii 字符的地址,并且想要在该地址上使用模运算符,我该怎么做?每当我尝试使用诸如 之类的基本操作来执行此操作时int modulo = ptr % 16,我都会收到错误“二进制 % 的操作数无效”我对二进制算术的掌握很弱,所以我知道我需要继续发展这项技能,但如果有人可以告诉我我在这里缺少什么概念,这将是一个很大的帮助,谢谢。

编辑:抱歉,我不太清楚我想要完成什么,但基本上我只需要显示一块有 16 个插槽的内存。它是一个程序,在数组中找到一个 ascii 字符,我已经完成了,然后显示存储该 ascii 字符的内存块。当我现在运行它时,它会显示找到的 ascii 字符以及找到的字符后面的 15 个字符及其内存位置。相反,如果找到的 ascii 字符位于内存块的中间,我需要它来显示它周围存储的内容,而不仅仅是它后面的内容。因此,如果找到的字符位于数组的 23 槽中,则程序将显示数组的 16-31 槽中的字符和内存位置。

c pointers modulo pointer-arithmetic

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

递减和模数 - 如何在一行代码中减少负值

我发现增加有限变量的方法非常温和,只需:

++i %= range;
Run Code Online (Sandbox Code Playgroud)

不幸的是,这个技巧不适用于减量,因为-1 % v == -1.

如何在C++中改进这一点?

c++ modulo

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

Brainfuck 中的 divmod 算法

有人可以向我解释这段代码吗?我明白它的作用,但我不明白它是如何工作的。

# >n 0 d
[->+>-[>+>>]>[+[-<+>]>+>>]<<<<<<]
# >0 n d-n%d n%d n/d
Run Code Online (Sandbox Code Playgroud)

algorithm division modulo brainfuck divmod

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

带模数的 Python for 循环

是否可以使用模运算创建python for循环?我在 Python 中有一个环形缓冲区,我想迭代startPosendPos索引之间的元素,其中的startPos值可以大于endPos. 在其他编程语言中,我会用模运算符直观地实现这一点:

int startPos = 6;
int endPos = 2;
int ringBufferSize = 8;
for(int i = startPos, i != endPos, i = (i+1) % ringBufferSize) {
    print buffer.getElementAt(i);
}
Run Code Online (Sandbox Code Playgroud)

有没有办法在 Python 中轻松做到这一点?我只找到了

for i in list:
    print buffer[i]
Run Code Online (Sandbox Code Playgroud)

语法但没有为我的问题提供等效解决方案。

我的下一个方法是在迭代存储在列表中的索引之前提前创建列表。但是有没有办法像在其他编程语言中一样通过直接在 for 循环中使用模运算来做到这一点?

python for-loop modulo

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