小编The*_*rse的帖子

打印给定列和行约束的交替 X 和 O 矩阵?

给定以下参数,我正在尝试编写一个打印 X 和 O 矩阵的算法:

int numRows
int numCols
int charsPerCol
int charsPerRow
Run Code Online (Sandbox Code Playgroud)

例如打电话

printXOMatrix(int charsPerCol, int charsPerRow, int numCols, int numRows);
Run Code Online (Sandbox Code Playgroud)

带参数

printXOMatrix(3,2,15,8);
Run Code Online (Sandbox Code Playgroud)

将导致以下内容被打印到标准输出:

XXXOOOXXXOOOXXX
XXXOOOXXXOOOXXX
OOOXXXOOOXXXOOO
OOOXXXOOOXXXOOO
XXXOOOXXXOOOXXX
XXXOOOXXXOOOXXX
OOOXXXOOOXXXOOO
OOOXXXOOOXXXOOO
Run Code Online (Sandbox Code Playgroud)

到目前为止,这是我的代码,如果列数/每列的字符数不同,它似乎可以正确打印,但在以下情况下会失败:

printXOMatrix(2,2,8,8);
Run Code Online (Sandbox Code Playgroud)

以下内容打印到标准输出:

XXOOXXOO
OOXXOOXX
OOXXOOXX
XXOOXXOO
XXOOXXOO
OOXXOOXX
OOXXOOXX
XXOOXXOO
Run Code Online (Sandbox Code Playgroud)

我如何处理这种边缘情况/清理我的代码?这是我到目前为止所拥有的:

XXXOOOXXXOOOXXX
XXXOOOXXXOOOXXX
OOOXXXOOOXXXOOO
OOOXXXOOOXXXOOO
XXXOOOXXXOOOXXX
XXXOOOXXXOOOXXX
OOOXXXOOOXXXOOO
OOOXXXOOOXXXOOO
Run Code Online (Sandbox Code Playgroud)

c c++ algorithm

5
推荐指数
1
解决办法
92
查看次数

Python中相当基本的字符串扩展?

我正在尝试创建一个将采用"压缩"字符串的函数

'a12b3c'
Run Code Online (Sandbox Code Playgroud)

并返回其"扩展"形式,这个例子就是这样

'aaaaaaaaaaaabbbc'
Run Code Online (Sandbox Code Playgroud)

假设每个字符重复次数与下面的数字相同,或者如果字符后面没有数字则重复一次.

我已经能够创建一个函数,如果"压缩"字符串中的数字值只是一位数字,这将执行此操作,所以我的尝试适用于像

'a3b2c6'
Run Code Online (Sandbox Code Playgroud)

但我似乎无法找到一种方法来考虑数值超过一位数的情况.

python string function python-3.x

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

如何使用带有前导零的数字变量进行bash算术?

我在bash脚本中有以下代码,其中"values"是新行分隔数字的变量,其中一些具有前导0,我试图迭代值中的每个值并将每个值添加到变量"sum" .

sum=0
while read line; do
    sum=$(( sum + line ))
done <<< "$values"
Run Code Online (Sandbox Code Playgroud)

这个代码段给了我错误:"对于base来说价值太大了(错误令牌是"09")",据我所知,这是因为bash算术表达式将值"line"解释为八进制值,因为它有一个领先零.

如何允许bash将line的值解释为十进制值?(例如09 - > 9)这个bash算术表达式中的值"line"?

bash command-line sh

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

创建可以将 lambda 应用于上下文中的列表的 Lisp 宏

基本上我正在尝试编写一个 Common Lisp 宏,定义为:

(defmacro applyfunct (function arguments variables))
Run Code Online (Sandbox Code Playgroud)

将作为参数给出的函数应用function到参数arguments(这是一个应用函数的参数列表),在必要时,使用列表列表中给定的变量variables。因此,使用这些参数调用时的返回值如下:

(applyfunct + (7 5) ((x 1) (y 2)))
Run Code Online (Sandbox Code Playgroud)

将是 12,考虑到 7+5=12,并且不需要上下文变量 x 和 y 将函数应用于参数。但是,当它确实需要给定的上下文变量时:

(applyfunct (lambda (x y) (+ (* a x) (* y b)) (4 2) ((a 2) (b 4))))
Run Code Online (Sandbox Code Playgroud)

如果在为求值返回 16 的函数中需要这些变量,它应该使用这些变量,因为:

(applyfunct (lambda (x y) (+ (* a x) (* y b)) (4 2) ((a 8) (b 1))))
;                    4 2        8 4     2 1    
; (+ (* 8 4) …
Run Code Online (Sandbox Code Playgroud)

lisp macros lambda clisp common-lisp

2
推荐指数
1
解决办法
329
查看次数

标签 统计

algorithm ×1

bash ×1

c ×1

c++ ×1

clisp ×1

command-line ×1

common-lisp ×1

function ×1

lambda ×1

lisp ×1

macros ×1

python ×1

python-3.x ×1

sh ×1

string ×1