黑马程序员技术交流社区

标题: 关于阳哥今天的技术分活动 [打印本页]

作者: 亦金亦水    时间: 2014-7-5 12:48
标题: 关于阳哥今天的技术分活动
那个三角形的,正等腰和反等腰出来了,但是旋转90度,谁有思路呀?

作者: 引子    时间: 2014-7-5 13:01
就是旋转90度打印  你把旋转后的图形画出来  结合图形去写代码
作者: 心者觉也    时间: 2014-7-5 14:12
我有一个比较笨的思路,这个图形也就四个方向
你可以画4个,用N%4来判断显示哪一个
作者: 亦金亦水    时间: 2014-7-5 14:38
心者觉也 发表于 2014-7-5 14:12
我有一个比较笨的思路,这个图形也就四个方向
你可以画4个,用N%4来判断显示哪一个 ...

这个方法 ,给力!
作者: 心者觉也    时间: 2014-7-5 18:13
亦金亦水 发表于 2014-7-5 14:38
这个方法 ,给力!

有没有啥更简洁的思路?
作者: 跑步先生    时间: 2014-7-5 21:38
本帖最后由 跑步先生 于 2014-7-5 21:40 编辑

不过,这是个关于循环和判断的语句,不过,我就将它分解了上下两个三角形,不过,我在画翻转的时候,存在换行后对比原图的不太像,上图为用程序实现的翻转,下图为真实翻转,上图的换行后的行间距太大啊,求高手解决。

)4W_Z)FVZ2W9(3103UU{FKL.jpg (17.38 KB, 下载次数: 112)

)4W_Z)FVZ2W9(3103UU{FKL.jpg

0(NHQI)L4G8M([N_0()B{%Q.jpg (12.24 KB, 下载次数: 107)

0(NHQI)L4G8M([N_0()B{%Q.jpg

作者: 遗失的美好YXJ    时间: 2014-7-5 22:00
本帖最后由 遗失的美好YXJ 于 2014-7-5 23:42 编辑

遍历整个区域,然后用线性规划的方法选择一个菱形的区域(在四条线内)
旋转的话,菱形不动,旋转坐标轴.(以菱形中心点为坐标原点,逆时针旋转坐标轴,但是遍历的方向4个图都要相同)
我是这样做的,但是不知道对不对.看了大家怎么会有空格的?不是很懂

菱形顺时针旋转原理图.png (113.35 KB, 下载次数: 110)

菱形顺时针旋转原理图.png

作者: 快乐自我    时间: 2014-7-5 23:51
找点规律好点
作者: 亦金亦水    时间: 2014-7-6 09:07
跑步先生 发表于 2014-7-5 21:38
不过,这是个关于循环和判断的语句,不过,我就将它分解了上下两个三角形,不过,我在画翻转的时候,存在换 ...

学习了!!!!!!
作者: 亦金亦水    时间: 2014-7-6 09:12
遗失的美好YXJ 发表于 2014-7-5 22:00
遍历整个区域,然后用线性规划的方法选择一个菱形的区域(在四条线内)
旋转的话,菱形不动,旋转坐标轴.(以菱形 ...

学习了!!!!!!
作者: 遗失的美好YXJ    时间: 2014-7-6 09:16
亦金亦水 发表于 2014-7-6 09:12
学习了!!!!!!

还不知道我代码写的对不对,你写好了咱们可以交流交流
作者: 跑步先生    时间: 2014-7-6 12:34
遗失的美好YXJ 发表于 2014-7-5 22:00
遍历整个区域,然后用线性规划的方法选择一个菱形的区域(在四条线内)
旋转的话,菱形不动,旋转坐标轴.(以菱形 ...

能看下你的源代码吗?
作者: 遗失的美好YXJ    时间: 2014-7-6 12:51
跑步先生 发表于 2014-7-6 12:34
能看下你的源代码吗?

这个,怕被扣技术分,还是不要了吧.7.8号给.再说我的源码也很呆.
用N来旋转做的不好.用switch做的

作者: 遗失的美好YXJ    时间: 2014-7-6 12:52
把坐标轴旋转试试
作者: 吴俊勇    时间: 2014-7-6 13:11
我有个疑问就是,看别人写的代码很能理解,要自己写,完全不知道怎么下手,只知道个大概
作者: 刘亚东    时间: 2014-7-6 15:04
遗失的美好YXJ 发表于 2014-7-5 22:00
遍历整个区域,然后用线性规划的方法选择一个菱形的区域(在四条线内)
旋转的话,菱形不动,旋转坐标轴.(以菱形 ...

感觉你的方法比较高端!
作者: ╭月牙湾湾╮    时间: 2014-7-6 20:57
心者觉也 发表于 2014-7-5 14:12
我有一个比较笨的思路,这个图形也就四个方向
你可以画4个,用N%4来判断显示哪一个 ...

:handshake我也是用的这个比较笨的方法。。。
作者: 心者觉也    时间: 2014-7-6 21:20
遗失的美好YXJ 发表于 2014-7-5 22:00
遍历整个区域,然后用线性规划的方法选择一个菱形的区域(在四条线内)
旋转的话,菱形不动,旋转坐标轴.(以菱形 ...

果然看起来很高端大气,没看懂的说。。。
作者: 心者觉也    时间: 2014-7-6 22:34
本帖最后由 心者觉也 于 2014-7-6 22:40 编辑

第二个思路:
整个图形抛开占位符不算,是一个轴对称图形,旋转N*90°是不会变化的,变化的只是占位符的位置。
---定义一个StringBuffer数组,每一行是一个StringBuffer()对象,整个数组表示的是除开占位符的基本图形。

---在基本图形的基础上,利用StringBuffer的replace(int begin, int end, String str)方法来把关键的位置替换成占位符。


作者: 亦金亦水    时间: 2014-7-7 08:33
心者觉也 发表于 2014-7-6 22:34
第二个思路:
整个图形抛开占位符不算,是一个轴对称图形,旋转N*90°是不会变化的,变化的只是占位符的位 ...

学习了!!!!!!!!!!!
作者: 心者觉也    时间: 2014-7-7 09:18
亦金亦水 发表于 2014-7-7 08:33
学习了!!!!!!!!!!!

我想的都是很土鳖的方法啊~~~~
作者: 遗失的美好YXJ    时间: 2014-7-10 00:30
心者觉也 发表于 2014-7-6 22:34
第二个思路:
整个图形抛开占位符不算,是一个轴对称图形,旋转N*90°是不会变化的,变化的只是占位符的位 ...

感觉这个有点投机的意思啊,如果多几个占位符也能很轻松实现吗
作者: 遗失的美好YXJ    时间: 2014-7-10 00:49
心者觉也 发表于 2014-7-6 21:20
果然看起来很高端大气,没看懂的说。。。

import java.util.Scanner;
class rotateRhombus
{
        static int x=0;
        static int y=0;
        public static void main(String[] args){
                rotateRhombus(0);                                                //先打印一个原型
                rotateRhombus(1);                                                //顺时针旋转90°
                rotateRhombus(2);                                                //顺时针旋转180°
                rotateRhombus(3);                                                //顺时针旋转270°
                System.out.println("请输入一个整数");                //输入的数是顺时针旋转90°的次数
                Scanner sc = new Scanner(System.in);
                rotateRhombus(sc.nextInt());                                //打印旋转的菱形
        }
        public static void rotateRhombus(int N){
                int n = 5;                                                                //把菱形的中心放置在坐标轴的原点,5代表往四周延生5个单位.
                switch(N%4){                                                        //判断N%4的4种情况,对应不同的图形.
                        case 0:                                                                //原型或旋转360°
                                for ( y=-n ; y<=n ; y++){
                                        for( x=-n; x<=n ; x++){
                                                printRhombus(x,y,n);
                                        }
                                        System.out.println();
                                }
                                break;
                        case 1:                                                                //顺时针旋转90°
                                for ( x=-n ; x<=n ; x++){
                                        for( y=n; y>=-n ; y--){
                                                printRhombus(x,y,n);
                                        }
                                        System.out.println();
                                }
                                break;
                        case 2:                                                                //顺时针旋转180°
                                for ( y=n ; y>=-n ; y--){
                                        for( x=n; x>=-n ; x--){
                                                printRhombus(x,y,n);
                                        }
                                        System.out.println();
                                }
                                break;
                        case 3:                                                                //顺时针旋转270°
                                for ( x=n ; x>=-n ; x--){
                                        for( y=-n; y<=n ; y++){
                                                printRhombus(x,y,n);
                                        }
                                        System.out.println();
                                }
                                break;
                        default:
                }
        }
        public static void printRhombus(int x,int y,int n){//打印菱形(带标识符)
                System.out.print(((x+y<=n) && (x+y>=-n) && (x-y<=n) && (x-y>=-n))? ((x==-4 && y==-1)?"1":"*"):" ");
        }
}

我的源码,分享一下,遍历的方向要始终保持一致有点难理解
作者: 心者觉也    时间: 2014-7-10 08:59
遗失的美好YXJ 发表于 2014-7-10 00:30
感觉这个有点投机的意思啊,如果多几个占位符也能很轻松实现吗

确实取巧了,多几个占位符那就看有木有规律了,木有规律那就会很麻烦,果断换思路换方法
作者: X11    时间: 2014-7-10 11:01
心者觉也 发表于 2014-7-10 08:59
确实取巧了,多几个占位符那就看有木有规律了,木有规律那就会很麻烦,果断换思路换方法 ...

这是我写的一个帖子,可以看一下周末技术分总结




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2