作者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/m.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