2つの要素に対して差分を求めるとは、何が変わっていないのか、何が追加されたのか、何が削除されたのか、求める行為である。
差分を計算するために、下記3つを計算する。
- 編集距離 (levenshtein distance)
- 2つの要素の差分を数値化したもの
- LCS (Longest Common Subsequence)
- 2つの要素 X と Y の最長共通部分列
| discard """ | |
| Run as following. | |
| $ nim c -r --verbosity:0 helloworld.nim | |
| """ | |
| echo("hello world.") |
| discard """ | |
| Run as following. | |
| $ nim c -r --verbosity:0 fibonacci.nim | |
| """ | |
| proc fibonacci(n: int): int = | |
| if n < 2: | |
| return n | |
| return fibonacci(n-1) + fibonacci(n-2) |
| discard """ | |
| Run as following. | |
| $ nim c -r --verbosity:0 insert_sort.nim | |
| """ | |
| proc insert_sort(alist: var seq[int], position: int, value: int) = | |
| var i: int | |
| i = position - 1 | |
| while i >= 0 and alist[i] > value: |
| discard """ | |
| Run as following. | |
| $ nim c -r --verbosity:0 quick_sort.nim | |
| """ | |
| proc sort(alist: var seq[int]): seq[int] = | |
| if alist.len == 0: | |
| return alist |
| discard """ | |
| Run as following. | |
| $ nim c -r binary_tree.nim | |
| """ | |
| type | |
| Node*[T] = ref NodeObj[T] | |
| NodeObj[T] = object | |
| left: Node[T] | |
| right: Node[T] |
| import math | |
| import strutils | |
| proc select_random_pivot_index(anarray: openArray[int], left: int, right: int): int = | |
| ## ランダムに 軸値 の添字を決定する。 | |
| if left == right: | |
| return left | |
| return random(left..right) |
| # -*- coding: utf-8 -*- | |
| import base64 | |
| from cryptography.hazmat.backends import default_backend | |
| from cryptography.hazmat.primitives import serialization | |
| from cryptography.hazmat.primitives.asymmetric.rsa import RSAPublicNumbers | |
| """ |