给定以下参数,我正在尝试编写一个打印 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) 我正在尝试创建一个将采用"压缩"字符串的函数
'a12b3c'
Run Code Online (Sandbox Code Playgroud)
并返回其"扩展"形式,这个例子就是这样
'aaaaaaaaaaaabbbc'
Run Code Online (Sandbox Code Playgroud)
假设每个字符重复次数与下面的数字相同,或者如果字符后面没有数字则重复一次.
我已经能够创建一个函数,如果"压缩"字符串中的数字值只是一位数字,这将执行此操作,所以我的尝试适用于像
'a3b2c6'
Run Code Online (Sandbox Code Playgroud)
但我似乎无法找到一种方法来考虑数值超过一位数的情况.
我在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"?
基本上我正在尝试编写一个 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) 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