トップページ > プログラム > 2016年10月17日 > Cfbu+94c

書き込み順位&時間帯一覧

28 位/188 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000200000000000000002



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
詰めswift [無断転載禁止]©2ch.net

書き込みレス一覧

詰めswift [無断転載禁止]©2ch.net
1 :デフォルトの名無しさん[]:2016/10/17(月) 07:26:01.96 ID:Cfbu+94c
swiftらしい簡潔な書き方を追求するスレ
昔「詰めvi」というスレが好きだったので立ててみました。
[出題者]
・問題を定義。実現したい機能、データ構造、制約条件等を簡潔に記載
・自分の解答例のコードを記載。この時点ではへぼいコードでも問題ないです
・自分の解答例への感想、改善要望等の記載推奨。工夫した点、不満な点(もう少しこうしたい)、こう書けるはずなのにエラーになったなど
[挑戦者]
・出題に対して「俺ならこう書く」というのをコードで回答
お約束
・コードで語ろう
 投稿は実際に動作するコードを付けることを原則とします。
 「この書き方は好き」とか複数の投稿済みコードに対して「こちらの方がSwiftらしい」みたいなことはコード無しでもOK。
 他の人を批判する場合は必ずそれに相応する動作可能コードを付けること。
・コード無しでディスるだけの人は徹底無視
・投稿するコードはXCode8のプレイグラウンドまたは”IBM Swift Sandbox”にペーストしてそのまま動作すること
・環境は当面Swift3ベース、Swift Standard Library、Foundation Libraryの範囲とします。
 異なる場合は動作環境を明記のこと。
評価基準
・swiftらしい書き方かどうか
  簡潔性、直交性等
・意図が明確か
・短いは正義

例1
1から100までの奇数の2乗の合計を求める

let a = Array(1...100).filter{$0%2==1}.map{$0*$0}
let b = a.reduce(0){$0+$1}

1行で書きたかったがplaygroundがエラーになった
詰めswift [無断転載禁止]©2ch.net
2 :デフォルトの名無しさん[]:2016/10/17(月) 07:26:43.92 ID:Cfbu+94c
例2
汎用的なエンディアン変換

protocol BoCInititializable {
associatedtype BaseType
init(littleEndian: BaseType)
init(bigEndian: BaseType)
}
extension UInt16: BoCInititializable{}
extension UInt32: BoCInititializable{}
extension UInt64: BoCInititializable{}
extension UInt: BoCInititializable{}

func bth<T:BoCInititializable>(_ v:T)->T {
return T(bigEndian: v as! T.BaseType)
}
func lth<T:BoCInititializable>(_ v:T)->T {
return T(littleEndian: v as! T.BaseType)
}

print( bth(UInt32(1)) )


もう少し簡潔に書きたいがunsignedintegerとかでは上手くかけなかった


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。