Share Code Quickly

What is Harigami?

Harigami is a simple source code sharing service. You can share source code by an URL which is issued after submission.
You can also run your source code online such as Python, Ruby, JavaScript and so on.
For free.Use for code review.
Preferences
anonymous Pythonでハミング距離
Python
from scipy.spatial import distance


hamming_distance = distance.hamming(list('Python'), list('Pandas')) * len('Python')

print(hamming_distance)
anonymous No title
Python
# (1)拡張モジュールのインポート
import numpy as np                  # 配列を扱う数値計算ライブラリNumPy
import matplotlib.pyplot as plt     # グラフ描画ライブラリmatplotlib
import japanize_matplotlib          # matplotlibの日本語化

# (2)時間変数tの導入
Time = 10             # 変数tの範囲 0≦t<T(日)(250,150,150,700と値を変えてシミュレーションを行う)
n = 10*Time                 # 変数tの範囲をn等分   n=T/h=T/0.1=10*T (T=250のときはn=2500)
h = 0.1                  # 等差数列の公差:0.1 固定
t = np.arange(0,Time,h)     # 0から公差dtでTを超えない範囲で等差数列を生成 t[0],...,t[n-1] 要素数n個

# (3)SIRモデル
# 3-1パラメータ
lamda = 0           # モデルエリアの人口(人)(東京都1400万人に匹敵するエリアを想定) N=S+I+R=一定
d=0                       #標的細胞の死亡率
beta=0.00001157                     #ウィルス粒子の侵入率
delta=3.412                     #感染細胞の死亡率
p=0.020099                         #ウィルス粒子を吐き出す数
c=3.381                        #ウィルス粒子の死亡率
# 3-2初期値
I_0 = 1                # 初期感染細胞
V_0 = 0.961            # 初期ウィルス粒子数
T_0 = 400000000        #初期標的細胞
# 3-3微分方程式
dTdt = lambda T, I, V, t : lamda-d*T-beta*T*V               # dSdt ≡ dS/dt  dSdt(S, I, R, t)
dIdt = lambda T, I, V, t : beta*T*V-delta*I       # dIdt ≡ dI/dt  dIdt(S, I, R, t)
dVdt = lambda T, I, V, t : p*I-c*V                  # dRdt ≡ dR/dt  dRdt(S ,I ,R, t)
# 3-4数値積分変数S,I,Rをリストとして生成
T = np.empty(n)          # T[0],...,T[n-1] 要素数n個
I = np.empty(n)          # I[0],...,I[n-1] 要素数n個
V = np.empty(n)          # V[0],...,R[n-1] 要素数n個
# 3-5初期値代入
T[0] = T_0
I[0] = I_0
V[0] = V_0

# (4)数値積分 4次ルンゲ-クッタ法 4th-Order Runge–Kutta Methods
for j in range(n-1):     # j=0,...,n-2 -> S[j]=S[0],...,S[n-1](I[j],R[j]も同じ) 要素数n個
  
  
  kT1 = h * dTdt( T[j] ,I[j] ,V[j] ,t[j] )
  kI1 = h * dIdt( T[j] ,I[j] ,V[j] ,t[j] )
  kV1 = h * dVdt( T[j] ,I[j] ,V[j] ,t[j] )

  kT2 = h * dTdt( T[j] + kT1/2 ,I[j] + kI1/2 ,V[j] + kV1/2 ,t[j] + h/2 )
  kI2 = h * dIdt( T[j] + kT1/2 ,I[j] + kI1/2 ,V[j] + kV1/2 ,t[j] + h/2 )
  kV2 = h * dVdt( T[j] + kT1/2 ,I[j] + kI1/2 ,V[j] + kV1/2 ,t[j] + h/2 )

  kT3 = h * dTdt( T[j] + kT2/2 ,I[j] + kI2/2 ,V[j] + kV2/2, t[j] + h/2 )
  kI3 = h * dIdt( T[j] + kT2/2 ,I[j] + kI2/2 ,V[j] + kV2/2, t[j] + h/2 )
  kV3 = h * dVdt( T[j] + kT2/2 ,I[j] + kI2/2 ,V[j] + kV2/2, t[j] + h/2 )

  kT4 = h * dTdt( T[j] + kT3 ,I[j] + kI3 ,V[j] + kV3 ,t[j] + h )
  kI4 = h * dIdt( T[j] + kT3 ,I[j] + kI3 ,V[j] + kV3 ,t[j] + h )
  kV4 = h * dVdt( T[j] + kT3 ,I[j] + kI3 ,V[j] + kV3 ,t[j] + h )

  T[j+1] = T[j] + 1/6 * ( kT1 + 2*kT2 + 2*kT3 + kT4 )   # 末項 j=n-2 -> S[j+1]=S[n-1]
  I[j+1] = I[j] + 1/6 * ( kI1 + 2*kI2 + 2*kI3 + kI4 )   # 末項 j=n-2 -> I[j+1]=I[n-1]
  V[j+1] = V[j] + 1/6 * ( kV1 + 2*kV2 + 2*kV3 + kV4 )   # 末項 j=n-2 -> R[j+1]=R[n-1]

# (5)結果表示 データプロットによるグラフ表示
# 点(t,S),点(t,I),点(t,R) それぞれ要素数n個のプロット
plt.plot(t, T, color = "green", label = "T:標的細胞", linewidth = 1.0)
plt.plot(t, I, color = "red", label = "I:感染細胞", linewidth = 1.0)
plt.plot(t, V, color= "blue", label = "V:ウィルス粒子数", linewidth = 1.0)
# グラフの見た目設定
#plt.title('SIRモデル RK4によるシミュレーション(m={},T={})'.format(m,T))  # グラフタイトル パラメータmとTの値表示
#plt.yticks(np.arange(0,N+0.1,N/10))    # y軸 目盛りの配分 0からN(=1000万)までを10等分 N/10(=100万)刻み Nを含めるためNをN+0.1としておく
#plt.gca().set_yticklabels(['{:.0f}%'.format(y/(N/100)) for y in plt.gca().get_yticks()])   # y軸目盛りを%表示に変更
plt.xlabel('時間')                              # 横軸ラベル
plt.ylabel('数(総数に対する割合)')      # 縦軸ラベル
#plt.grid(True)                                        # グリッド表示
#plt.legend()                                          # 凡例表示
# 設定反映しプロット描画
plt.yscale('log')
plt.show()
anonymous 処理時間の計測
VBA
Sub 処理時間計測()
    
    Rem 計測開始
    Dim 開始時間 As Single
    開始時間 = Timer
    
    Rem 計測終了
    Dim 終了時間 As Single
    終了時間 = Timer
    
    MsgBox "完了!" & vbCrLf & vbCrLf & "処理時間:" & Round(終了時間 - 開始時間, 2) & "秒"
    
End Sub
anonymous PythonでGeoPandasとFionaを用いて複数レイヤを持つKMLファイルを読み込む
Python
import fiona
import geopandas as gpd

kml_path = "/path/to/kml/file"

# KMLドライバの設定
gpd.io.file.fiona.drvsupport.supported_drivers["KML"] = "rw"

# 空のGeoDataFrameを生成
gdf = gpd.GeoDataFrame()

# 各レイヤごと情報を取り出し、1つのGeoDataFrameにする
for layer in fiona.listlayers(kml_path):
    tmp_gdf = gpd.read_file(kml_path, driver="KML", layer=layer)
    gdf = gdf.append(tmp_gdf)
anonymous No title
Lisp
(define (app/cc ls1 ls2)
  (let/cc
   cont
   (if (null? ls1)
       (cont ls2)
       (cons (car ls1)
	     (app/cc (cdr ls1) ls2)))))
anonymous No title
Lisp
(define (app/cc ls1 ls2)
  (if (null? ls1)
      (let/cc cont
	      (cont ls2))
      (cons (car ls1)
	    (app/cc (cdr ls1) ls2))))
anonymous No title
C
#include <stdio.h>

int main(void)
{
    printf("Hello World!");
    return 0;
}
anonymous No title
Python
# coding: utf-8

from __future__ import division
import ui
import clipboard
from console import hud_alert

shows_result = False

def button_tapped(sender):
	'@type sender: ui.Button'
	# Get the button's title for the following logic:
	t = sender.title
	global shows_result
	# Get the labels:
	label = sender.superview['label1']
	label2 = sender.superview['label2']
	if t in '0123456789':
		if shows_result or label.text == '0':
			# Replace 0 or last result with number:
			label.text = t
		else:
			# Append number:
			label.text += t
	elif t == '.' and label.text[-1] != '.':
		# Append decimal point (if not already there)
		label.text += t
	elif t in '+-÷×':
		if label.text[-1] in '+-÷×':
			# Replace current operator
			label.text = label.text[:-1] + t
		else:
			# Append operator
			label.text += t
	elif t == 'AC':
		# Clear All
		label.text = '0'
	elif t == 'C':
		# Delete the last character:
		label.text = label.text[:-1]
		if len(label.text) == 0:
			label.text = '0'
	elif t == '=':
		# Evaluate the result:
		try:
			label2.text = label.text + ' ='
			expr = label.text.replace('÷', '/').replace('×', '*')
			label.text = str(eval(expr))
		except (SyntaxError, ZeroDivisionError):
			label.text = 'ERROR'
		shows_result = True
	if t != '=':
		shows_result = False
		label2.text = ''

def copy_action(sender):
	'@type sender: ui.Button'
	t1 = sender.superview['label1'].text
	t2 = sender.superview['label2'].text
	if t2:
		text = t2 + ' ' + t1
	else:
		text = t1
	clipboard.set(text)
	hud_alert('Copied')

v = ui.load_view('Calculator')

if min(ui.get_screen_size()) >= 768:
	# iPad
	v.frame = (0, 0, 360, 400)
	v.present('sheet')
else:
	# iPhone
	v.present(orientations=['portrait'])
anonymous No title
HTML
https://calendar.google.com/calendar/embed?height=600&wkst=1&bgcolor=%23ffffff&ctz=Asia%2FTokyo&src=NTViOHVodDZqZHRmZmU3Mm82b2pocGxzN29AZ3JvdXAuY2FsZW5kYXIuZ29vZ2xlLmNvbQ&src=amEuamFwYW5lc2UjaG9saWRheUBncm91cC52LmNhbGVuZGFyLmdvb2dsZS5jb20&color=%23F09300&color=%230B8043
anonymous No title
HTML
<iframe src="https://calendar.google.com/calendar/embed?src=fukuta%40uni-spot.com&ctz=Asia%2FTokyo" style="border: 0" width="800" height="600" frameborder="0" scrolling="no"></iframe>