Skip to content

Instantly share code, notes, and snippets.

🏠
Working from home

omochimetaru omochi

🏠
Working from home
  • japan
  • tokyo
Block or report user

Report or block omochi

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
View knots-memo-3.md

knots-memo-2と同様の発想で、 今度は、Reduceの中の検索部分の実行回数を調べてみた。

ReduceはC++でもSwiftでも、3重ループになっていて、 その内側に検索がある。

C++の場合は連結リストからのリニアスキャンで、O(N)で遅く見える。 Swiftの場合はSetへの存在チェックで、O(1)で速く見える。

C++の計測コード

View knots-memo-2.md

11n37に対して

Generatorの数はC++でもSwiftでも32099個だった。 Swiftではalexで分けて表示したけど27718+4028+336+17=32099。

どちらもグラフに頂点を追加するところはGeneratorを1:1対応して追加しているので、 扱っている頂点の数は同じだと思う。

ただC++版の場合、 FindHomologyのループの中で、

View knots-memo-1.md

Link::FindHomologyの

        aborted = BuildEdges(MM, msg, &count) || Reduce(MM, msg, &count);

SwiftyKnotsの以下のコメントされた

View modify-coro.md

autoscale: true slidenumber: true

Swiftのmodifyアクセサとコルーチン

わいわいswiftc #17

@omochimetaru


Forum:

View MaybeEquatable2.swift
// see also https://gist.github.com/tarunon/85bdeccf8bc8f44b7b27d4974e0a843f
// user interface
public protocol MaybeEquatable {
func eraseToOpaqueEquatable() -> ErasedOpaqueEquatable
}
extension MaybeEquatable {
public func isEqual(to other: Any) -> Bool {
eraseToOpaqueEquatable().isEqual(to: other)
View MaybeEquatable.swift
// see also https://gist.github.com/tarunon/85bdeccf8bc8f44b7b27d4974e0a843f
public protocol MaybeEquatable {
func _isEqual(to other: Any) -> Bool
func __isEqual(to other: Any) -> Bool
}
extension MaybeEquatable {
public func __isEqual(to other: Any) -> Bool {
return false
View overload-score.md

slidenumber: true autoscale: true

Swiftのオーバーロード選択のスコア規則12種類

@omochimetaru

わいわいswiftc #16


View start-sil.md

slidenumber: true autoscale: true

SILを読もう

@omochimetaru

SwiftcKaigi #1


自己紹介

View MessageError.swift
import Foundation
public struct MessageError: LocalizedError, CustomStringConvertible {
public var message: String
public init(_ message: String) {
self.message = message
}
public var description: String { message }
View dynamicReplacement.swift
// a.swift
public dynamic func f() {
print("original")
}
// b.swift
import a
@_dynamicReplacement(for: f())
public func f_b() {
You can’t perform that action at this time.