作者cyclone350 (老子我最神)
看板java
标题Re: [问题] 请问如何写出奇偶分离合并程式
时间Thu Oct 2 19:36:56 2014
※ 引述《realmeat (真肉)》之铭言:
: ※ 引述《psplay (乱世中一个小小书僮)》之铭言:
: public static String shuffffffffffffle(String in){
: if(in == null) return null;
: int len = in.length();
: StringBuilder strBuilder = new StringBuilder();
: for(int i=0; i<len; i++){
: int k = 0;
: if(i % 2 == 0){
: k = i >>> 1;
: }else{
: k = (len + i - 1 + 2*(len%2)) >>> 1 ;
: }
: strBuilder.append(in.substring(k, k));
: }
: return strBuilder.toString();
: }
: 请享用
纯粹好奇, 这样写是单纯想搞原po还是平常真的就用这种方式写code?
例如今天题目突然变成切三等份後洗牌 (原本是切两等分)
不就等於要重写? 甚至维护的人会看不懂?
顺便借这个机会问问大家 clean code 的粒度会到多细 ?
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 123.193.192.133
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/java/M.1412249818.A.FF9.html
1F:→ carylorrk: 解 online judge 不是都是这样的吗 XD 10/02 20:10
2F:推 HuangJC: 很简洁了啊;让我想到以前读'字串指令'函式的source code 10/02 23:38
3F:→ HuangJC: 高手都在比简洁的.. 10/02 23:38
4F:→ HuangJC: 我还看过 swap(a,b) 的写法是 a^=b^=a^=b, 吓到吐奶.. 10/02 23:39
5F:→ HuangJC: 而 a=a-a (其实就是 a=0),这种我比较不懂干麻要这样整人 10/02 23:40
6F:推 HuangJC: 不过公司写加密模组的同事就会这样,故弄玄虚.. 10/02 23:42
7F:→ cyclone350: 我指的不是这种简洁... 是另外一种... 10/02 23:48
8F:推 psplay: 是说我的code还是r大的code阿XD 10/02 23:59
9F:→ psplay: 我是刚好没事用5~6分钟写出来der Q_Q 10/03 00:00
10F:→ psplay: 而且真的比不上版上一群鬼神的code XD 10/03 00:00
11F:推 LPH66: 四楼提的那个东西很有趣, 它在 C/C++ 是未定义行为 10/03 00:42
12F:→ LPH66: 但是在 Java 里是确实会把两个变数交换的 10/03 00:42
13F:→ LPH66: 不过以编译器的角度来看传统交换写法比较能编出"快"的程式 10/03 00:45
14F:推 HuangJC: 未定义?我是在 C++ 看到的,而且我想这相容性应到达 C 10/03 00:48
15F:→ HuangJC: 只要是整数型变数就应该有用,浮点数未必可以,没测过 10/03 00:49
16F:→ HuangJC: 基本上这写法不快,而且出现在微软范例程式中;我一直以 10/03 00:50
17F:→ HuangJC: 为范例程式要简单,目的是给你学,不是炫技;但我被闪到 10/03 00:51
18F:→ HuangJC: 了。合理猜测是微软大了,管不住太多员工的品质 10/03 00:51
19F:→ HuangJC: 各模组分切或外包,偶尔会有奇怪的东西出现.. 10/03 00:51
20F:推 HuangJC: java 有 >>> 运算子? 10/03 00:56
22F:→ LPH66: 但是 java 规定运算元的效应要在运算子计算前结算完毕 10/03 00:57
23F:→ LPH66: 所以在 java 上它是确实可以运作的没错 10/03 00:57
24F:→ LPH66: java 应该没有 unsigned shift 吧? 连无号数都没有了 10/03 00:59
25F:→ LPH66: 囧, 我弄错了...java 还有另一条规定是先左後右 10/03 01:00
26F:→ LPH66: 所以 a^=b^=a^=b 这个写法在 java 正好会变成我那篇文中 10/03 01:01
27F:→ LPH66: 会把值炸成 0 的那个顺序, 所以这在 java 是不能用的 10/03 01:01
28F:推 HuangJC: 文章已消失? 10/03 01:14
29F:推 LPH66: 在 C_and_CPP 版, 不在这个版 10/03 01:23
30F:推 HuangJC: 喔,我把括号内,当成是文章标题,难怪再找一次也没有.. 10/03 01:36
31F:推 AI3767: java有个 >>> 运算. 另外还有个隐藏版的 无号数 可以使用 10/03 01:43
32F:→ realmeat: 单然是搞原po啊 =3=y~ 10/03 09:37
33F:推 psplay: 太销魂了XD 10/03 09:47