scheme - 如何从字符列表中输出字符网格?
问题描述
我有一个要打印为固定列网格的字符列表。对于每一个line-width
我想打印到换行符。
例如,我想要
(#\Y #\q #\J #\u #\( #\t #\n #\m #\@ #\& #\c #\z #\x #\? #\} #\_ #\0 #\@ #\q #\r #\f #\/ #\I #\1 #\; #\B #\& #\O #\O #\O #\Y #\( #\n #\i #\0 #\B #\L #\h #\* #\# #\1 #\r #\? #\k #\& #\J #\J #\x #\# #\x #\i #\d #\Q #\o #\J #\J #\O #\o #\n #\_ #\v #\t #\r #\X #\c #\J #\X #\t #\z #\( #\) #\b #\C #\f #\x #\z #\d #\f #\Q #\t #\w)
显示为:
YqJu(tnm@
&czx?}_0@
qrf/I1;B&
OOOY(ni0B
Lh*#1r?k&
JJx#xidQo
JJOon_vtr
XcJXtz()b
CfxzdfQtw
这是我尝试过的:
(define (char-display char-list line-width)
(for ([char (in-list char-list)]
[i (in-range line-width)])
(cond
[(zero? i) (void)] ; to make sure modulo does not operate on zero
[(zero? (modulo line-width i)) (display #\newline)]
[else (display char)])))
在使用上面的列表和线宽 9 调用函数时,我得到:
J
(tnm@[
我究竟做错了什么?有一个更好的方法吗?
解决方案
其他人已经提供了很好的答案。我只想指出in-slice
,这在这种情况下会有所帮助。
(define (char-display char-list line-width)
(for ([chars (in-slice line-width char-list)])
(map display chars)
(newline)))
推荐阅读
- c - scanf“最大字段宽度”包括空格?
- node.js - 将猫鼬模式存储在数据库中
- java - 为什么这个十六进制值得到不同的十进制值?
- mongodb - Mongodb Lookup 无法正常工作
- ios - 如何使 iOS UIPicker 与多个列和标题进行本机反应?
- postgresql - 是否可以在不破坏现有数据库的情况下重新安装 Postresql?
- qt - 在 VNC 上运行 Qt GUI 应用程序会导致分段错误并显示错误消息
- multithreading - 如何解决管理员 Weblogic 11 OSB 中的卡住线程?
- mysql - 根据特定条件加入 3 个表
- wpf - WPF ComboBox 设置选定值