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 No title
Python
import gym
import matplotlib.pyplot as plt
import numpy as np
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from tensorflow.keras.optimizers import Adam
from collections import deque
from tensorflow.keras.losses import Huber
import tensorflow as tf

for device in tf.config.list_physical_devices("GPU"):
    tf.config.experimental.set_memory_growth(device, True)

NUM_EPISODES = 500
MAX_STEPS = 200
GAMMA = 0.99
WARMUP = 10

E_START = 1.0
E_STOP = 0.01
E_DECAY_RATE = 0.001

MEMORY_SIZE = 10000
BATCH_SIZE = 32


class QNetwork:
    def __init__(self, input_size, output_size):
        self.model = Sequential()
        self.model.add(Dense(16, activation="relu", input_dim=input_size))
        self.model.add(Dense(16, activation="relu"))
        self.model.add(Dense(16, activation="relu"))
        self.model.add(Dense(output_size, activation="linear"))

        self.model.compile(loss=Huber(), optimizer=Adam(learning_rate=0.001))


class Memory:
    def __init__(self, memory_size):
        self.buffer = deque(maxlen=memory_size)

    def add(self, experience):
        self.buffer.append(experience)

    def sample(self, batch_size):
        idx = np.random.choice(np.arange(len(self.buffer)), size=batch_size, replace=False)
        return [self.buffer[i] for i in idx]

    def __len__(self):
        return len(self.buffer)


env = gym.make("CartPole-v0")
state_size = env.observation_space.shape[0]
action_size = env.action_space.n

main_qn = QNetwork(state_size, action_size)
target_qn = QNetwork(state_size, action_size)
memory = Memory(MEMORY_SIZE)

state = env.reset()
state = np.reshape(state, [1, state_size])

total_step = 0
success_count = 0
for episode in range(NUM_EPISODES):
    step = 0
    target_qn.model.set_weights(main_qn.model.get_weights())

    epsilon = E_START

    for _ in range(MAX_STEPS):
        step += 1
        total_step += 1
        epsilon = E_STOP + (E_START - E_STOP) * np.exp(-E_DECAY_RATE * total_step)

        if epsilon > np.random.rand():
            action = env.action_space.sample()
        else:
            action = np.argmax(main_qn.model.predict(state)[0])

        next_state, _, done, _ = env.step(action)
        next_state = np.reshape(next_state, [1, state_size])

        if done:
            if step >= 190:
                success_count += 1
                reward = 1
            else:
                success_count = 0
                reward = 0

            next_state = np.zeros(state.shape)

            if step > WARMUP:
                memory.add((state, action, reward, next_state))
        else:
            reward = 0

            if step > WARMUP:
                memory.add((state, action, reward, next_state))

            state = next_state

        if len(memory) >= BATCH_SIZE:
            inputs = np.zeros((BATCH_SIZE, 4))
            outputs = np.zeros((BATCH_SIZE, 2))

            mini_batch = memory.sample(BATCH_SIZE)

            for i, (state_b, action_b, reward_b, next_state_b) in enumerate(mini_batch):
                inputs[i] = state_b

                if not (next_state_b == np.zeros(state_b.shape)).all(axis=1):
                    output = reward_b + GAMMA * np.amax(target_qn.model.predict(next_state_b)[0])
                else:
                    output = reward_b

                outputs[i] = main_qn.model.predict(state_b)
                outputs[i][action_b] = output

            main_qn.model.fit(inputs, outputs, epochs=1, verbose=0)

        if done:
            break

    print("Episode: {}, Steps: {}, eps:{:.3f}".format(episode, step, epsilon))
    plt.plot(episode, step)

    if success_count >= 5:
        break

    state = env.reset()
    state = np.reshape(state, [1, state_size])

plt.xlabel("Episodes")
plt.ylabel("Steps")
plt.legend(loc="best")
plt.show()

main_qn.model.save("../models/dqn_cart_pole.h5")
anonymous No title
VBA
Option Explicit

Public Declare PtrSafe Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _
    (Destination As Any, _
     Source As Any, _
     ByVal Length As LongPtr)
Sub test()
    
    Dim strA As String
    Dim strB As String
    Dim btA(3) As Byte
    Dim btB(3) As Byte
    Dim i As Long
    
    strA = "AAAAAAAAAAAAAAAA"
    
    'VarPtr(strA)とはstrAの文字列の実体が置かれているアドレスが書かれているアドレス。
    '以下を実施することでstrBの文字列の実体が置かれているアドレスが書かれているアドレスに
    'strAの実体が置かれているアドレスが書き込まれる。
    Call CopyMemory(ByVal VarPtr(strB), ByVal VarPtr(strA), 4)
    
    'Midステートメントの実施
    Mid(strA, 3, 2) = "BB"
        
    'strAに変更を加えたのにstrBにも影響が
    Debug.Print "両者の文字列を表示"
    Debug.Print strA
    Debug.Print strB
    
    '文字列の実体が書かれているアドレスを取得
    Call CopyMemory(btA(0), ByVal VarPtr(strA), 4)
    Call CopyMemory(btB(0), ByVal VarPtr(strB), 4)
    
    '同じ文字列の実体を指し示している2つの変数なのでstrBにも影響が出るのは当然
    'Midステートメントは文字列の実体を操作しているだけと想像できる
    Debug.Print vbCr & "両者の文字列の実体のアドレス"
    For i = 0 To 3
        Debug.Print Hex(btA(i)) & " ";
    Next i
    Debug.Print ""
    For i = 0 To 3
        Debug.Print Hex(btB(i)) & " ";
    Next i
    Debug.Print ""
    
    'Midステートメントのやっていることを想像
    '3文字目は先頭アドレス+4バイト目(1文字目0バイト1バイト、2文字目2バイト3バイト)
    'どこかに用意した"BB"のアドレスから2文字(4バイト分)
    'Call CopyMemory(ByVal StrPtr(strA) + 4, ByVal StrPtr("BB"), 4)
    '↑Midステートメントの代わりにMidステートメントと同じ場所で実施すれば同じ結果となる
    
    'Replace
    strA = Replace(strA, "BB", "CC")
    
    '今度はstrBには影響しない
    Debug.Print vbCr & "両者の文字列を表示"
    Debug.Print strA
    Debug.Print strB
    
    '文字列の実体が書かれているアドレスを取得
    Call CopyMemory(btA(0), ByVal VarPtr(strA), 4)
    Call CopyMemory(btB(0), ByVal VarPtr(strB), 4)
    
    '違う文字列の実体を指し示している。
    'Replaceのコードを見れば、strAに代入してしまったので別の文字列の実体を指し示すようになったということ。
    Debug.Print vbCr & "両者の文字列の実体のアドレス"
    For i = 0 To 3
        Debug.Print Hex(btA(i)) & " ";
    Next i
    Debug.Print ""
    For i = 0 To 3
        Debug.Print Hex(btB(i)) & " ";
    Next i
    Debug.Print ""
    
    '文字数を取得(文字列の実体より前4バイトで文字数を表す)
    Dim btC(3) As Byte
    Call CopyMemory(btC(0), ByVal StrPtr(strA) - 4, 4)
    
    'リトルエンディアンで20=32バイト=16文字と分かる
    Debug.Print vbCr & "strAの文字数を取得"
    For i = 0 To 3
        Debug.Print Hex(btC(i)) & " ";
    Next i
    Debug.Print ""
    
    'こんなことしちゃって良いの?
    '文字数変更で8文字(16バイト)
    btC(0) = 16
    Call CopyMemory(ByVal StrPtr(strA) - 4, btC(0), 4)
    
    Debug.Print vbCr & "8文字に変更したstrAの表示"
    Debug.Print strA
    
    '終端が00じゃ無いんですけど!!(16バイト目が00になっていない)
    Dim btD(31) As Byte
    Call CopyMemory(btD(0), ByVal StrPtr(strA), 32)
    Debug.Print vbCr & "strAの8文字とstrAより後の8文字を表示"
    Debug.Print btD
    Debug.Print "↑strAの終端が00じゃ無いんですけど!!"
    
End Sub
墨鴉🍔 簡単脱出ゲーム
Python
import sys

time_limit = 10
progress = 0
items = []


def start():
    return


def prologue():
    global progress

    print('目が覚めたら、知らない部屋にいた。')
    print('ここはいったいどこだ……?')
    print('とりあえず、出口を探さないと')

    progress = 1

    return


def epilogue():
    print('ふと、目が覚めた')
    print('辺りを見回すと、そこは見慣れた自分のアパートだった')
    print('あの謎の木箱はひとつもなく、あるのは自分の家具だけ')
    print('夢だったのだろうか……?')
    print('ふと、床に目をやると、悪寒が走った')
    print('床には、焼けただれて黒くなった、あの不気味な人形があった')
    print('…………')
    print('すぐに人形は処分した')
    print('それからは、なにごともなく生活を送っている')
    print('だが、あの奇妙な夢と、人形のことは誰にも話せずにいる')
    print('Fin')
    sys.exit()


def help():
    print('help: コマンド一覧')
    print('look: 周囲を見渡す')
    print('search: 物を持つ')
    print('item: 所持品を確認')


def look():
    print('周りを見渡してみる')

    if progress == 1:
        print('広さはワンルームのアパートくらいだ')
        print('出口はおろか、窓さえも見当たらない')
        print('部屋の中にあるものといえば、古めかしい木箱ばかりだ')
        return

    if progress == 2:
        print('他に開く木箱はなさそうだ')
        print('だが、木箱は雑然と置かれている')
        print('部屋が薄暗くて大変そうだが、木箱の間にはところどころすきまがある')
        return

    if progress == 3:
        print('木箱も、木箱のすきまも調べた……')
        print('何気なく天井を見ると、電球のようなものが付いている')
        print('あの電球、電気が点くのだろうか……?')
        return

    if progress == 4:
        print('困った、とうとうなにも手がかりはない……')
        print('持っているものは、不気味な人形に、マッチ、それに、フラスコというわけのわからない物だけ……')
        print('こんなもの、どうしろっていうんだ……')
        return

    return


def search(object):
    global progress

    if progress == 1 and '木箱' in object:
        print('周りにある木箱を調べてみる')
        print('ほとんどの蓋は釘で留められていて開かない')
        print('…………')
        print('あ! ひとつだけ、蓋が開く箱があった')
        print('')
        print('【不気味な人形】を手に入れた')
        print('なんでこんなものが……? 気持ち悪いな')
        progress = 2
        items.append('【不気味な人形】')
    elif progress == 2 and 'すきま' in object:
        print('木箱のすきまに手を入れて、なにか落ちていないか調べてみた')
        print('…………')
        print('あ! なにかが指先に当たった! これは……')
        print('【マッチ】を手に入れた')
        progress = 3
        items.append('【マッチ】')
    elif progress == 3 and '電球' in object:
        print('木箱を足場にして、天井の電球に手を伸ばしてみる')
        print('なんだこれは……? 中に液体が入っている?')
        print('これは電球じゃない、中に液体の入ったフラスコだ……')
        print('どうしてこんなものを天井に……?')
        print('【フラスコ】を手に入れた')
        progress = 4
        items.append('【フラスコ】')
    elif progress == 4 and '人形' in object and 'マッチ' in object and 'フラスコ' in object:
        print('なんとなく、フラスコの中身を開けてみた')
        print('臭い、これはなにかの油だろうか……')
        print('それを、躊躇うこともなく人形にかけてみる')
        print('…………')
        print('そして、マッチをこすって火を点けた')
        print('…………')
        print('不気味な人形が、髪の毛からメラメラと燃えていく')
        print('それを見つめていたら、段々と眠気が襲ってきた')
        print('木箱によりかかり、目を閉じる')
        print('…………')
        progress = 5
        epilogue()
    else:
        print('いろいろ試してみたが、手がかりは得られなかった……')

    return


def item():
    global items
    print('今の持ち物は……')

    if len(items) == 0:
        print('着ているもの以外は、なにも持っていない')
    else:
        for item in items:
            print(item)

    return


def main():
    global time_limit
    global progress

    while(True):
        if progress == 0:
            prologue()

        print('さて、どうしよう……')
        print('*helpでコマンド一覧')
        command = input()

        if 'help' in command:
            help()
        elif 'look' in command:
            look()
        elif 'search' in command:
            search(command)
        elif 'item' in command:
            item()
        elif 'exit' in command:
            sys.exit()
        else:
            print('そんなことをしても仕方ないな……')

        time_limit -= 1
        if time_limit == 0:
            print('あれ……?')
            print('急に、眠たくなってきた')
            print('ダメだ……眠くて……起きて……いられない……')
            break

    sys.exit()


if __name__ == '__main__':
    start()
    main()
anonymous No title
Python
import sys

time_limit = 10
progress = 0
items = []


def start():
    return


def prologue():
    global progress

    print('目が覚めたら、知らない部屋にいた。')
    print('ここはいったいどこだ……?')
    print('とりあえず、出口を探さないと')

    progress = 1

    return


def epilogue():
    print('ふと、目が覚めた')
    print('辺りを見回すと、そこは見慣れた自分のアパートだった')
    print('あの謎の木箱はひとつもなく、あるのは自分の家具だけ')
    print('夢だったのだろうか……?')
    print('ふと、床に目をやると、悪寒が走った')
    print('床には、焼けただれて黒くなった、あの不気味な人形があった')
    print('…………')
    print('すぐに人形は処分した')
    print('それからは、なにごともなく生活を送っている')
    print('だが、あの奇妙な夢と、人形のことは誰にも話せずにいる')
    print('Fin')
    sys.exit()


def help():
    print('help: コマンド一覧')
    print('look: 周囲を見渡す')
    print('search: 物を持つ')
    print('item: 所持品を確認')


def look():
    print('周りを見渡してみる')

    if progress == 1:
        print('広さはワンルームのアパートくらいだ')
        print('出口はおろか、窓さえも見当たらない')
        print('部屋の中にあるものといえば、古めかしい木箱ばかりだ')
        return

    if progress == 2:
        print('他に開く木箱はなさそうだ')
        print('だが、木箱は雑然と置かれている')
        print('部屋が薄暗くて大変そうだが、木箱の間にはところどころすきまがある')
        return

    if progress == 3:
        print('木箱も、木箱のすきまも調べた……')
        print('何気なく天井を見ると、電球のようなものが付いている')
        print('あの電球、電気が点くのだろうか……?')
        return

    if progress == 4:
        print('困った、とうとうなにも手がかりはない……')
        print('持っているものは、不気味な人形に、マッチ、それに、フラスコというわけのわからない物だけ……')
        print('こんなもの、どうしろっていうんだ……')
        return

    return


def search(object):
    global progress

    if progress == 1 and '木箱' in object:
        print('周りにある木箱を調べてみる')
        print('ほとんどの蓋は釘で留められていて開かない')
        print('…………')
        print('あ! ひとつだけ、蓋が開く箱があった')
        print('')
        print('【不気味な人形】を手に入れた')
        print('なんでこんなものが……? 気持ち悪いな')
        progress == 2
        items.append('【不気味な人形】')
    elif progress == 2 and 'すきま' in object:
        print('木箱のすきまに手を入れて、なにか落ちていないか調べてみた')
        print('…………')
        print('あ! なにかが指先に当たった! これは……')
        print('【マッチ】を手に入れた')
        progress = 3
        items.append('【マッチ】')
    elif progress == 3 and '電球' in object:
        print('木箱を足場にして、天井の電球に手を伸ばしてみる')
        print('なんだこれは……? 中に液体が入っている?')
        print('これは電球じゃない、中に液体の入ったフラスコだ……')
        print('どうしてこんなものを天井に……?')
        print('【フラスコ】を手に入れた')
        progress = 4
        items.append('【フラスコ】')
    elif progress == 4 and '人形' in object and 'マッチ' in object and 'フラスコ' in object:
        print('なんとなく、フラスコの中身を開けてみた')
        print('臭い、これはなにかの油だろうか……')
        print('それを、躊躇うこともなく人形にかけてみる')
        print('…………')
        print('そして、マッチをこすって火を点けた')
        print('…………')
        print('不気味な人形が、髪の毛からメラメラと燃えていく')
        print('それを見つめていたら、段々と眠気が襲ってきた')
        print('木箱によりかかり、目を閉じる')
        print('…………')
        progress = 5
        epilogue()
    else:
        print('いろいろ試してみたが、手がかりは得られなかった……')

    return


def item():
    global items
    print('今の持ち物は……')

    if len(items) == 0:
        print('着ているもの以外は、なにも持っていない')
    else:
        for item in items:
            print(item)

    return


def main():
    global time_limit
    global progress

    while(True):
        if progress == 0:
            prologue()

        print('さて、どうしよう……')
        print('*helpでコマンド一覧')
        command = input()

        if 'help' in command:
            help()
        elif 'look' in command:
            look()
        elif 'search' in command:
            search(command)
        elif 'item' in command:
            item()
        elif 'exit' in command:
            sys.exit()
        else:
            print('そんなことをしても仕方ないな……')

        time_limit -= 1
        if time_limit == 0:
            print('あれ……?')
            print('急に、眠たくなってきた')
            print('ダメだ……眠くて……起きて……いられない……')
            break

    sys.exit()


if __name__ == '__main__':
    start()
    main()
anonymous No title
Python
import sys
import numpy
from yahoo_finance_api2 import share
from yahoo_finance_api2.exceptions import YahooFinanceError
import pandas as pd
import time

print('銘柄コードの上位1ケタを入力してください')
user_input_num = input()

up1_num = int(user_input_num)

f = open(f'./sql/basedata_{up1_num}xxx.sql', 'w')
for num in range(up1_num*1000, (up1_num+1)*1000):
    print(f'銘柄コード:{num}')
    my_share = share.Share(f'{num}.T')
    symbol_data = None

    try:
        symbol_data = my_share.get_historical(
            share.PERIOD_TYPE_YEAR, 50,
            share.FREQUENCY_TYPE_DAY, 1)
        print('データ取得成功')
        df = pd.DataFrame(symbol_data)
        if df.empty:
            continue
        df["datetime"] = pd.to_datetime(df.timestamp, unit="ms")
        for record in df.values:
            print(f'銘柄コード:{num} 日付:{record[6]} 始値:{record[1]} 高値:{record[2]} 安値:{record[3]} 終値:{record[4]} 出来高:{record[5]}')
            if numpy.isnan(record[1]) or numpy.isnan(record[2]) or numpy.isnan(record[3]) or numpy.isnan(record[4]):
                continue
            f.write(f'INSERT INTO `my_stock_database` VALUES (null, \'{num}\', \'{record[6]}\', {record[1]}, {record[2]}, {record[3]}, {record[4]}, {record[5]});\n')

    except YahooFinanceError as e:
        print('データ取得失敗')
        print(e.message)
    time.sleep(1)
f.close()

anonymous No title
Python
import sys
import numpy
from yahoo_finance_api2 import share
from yahoo_finance_api2.exceptions import YahooFinanceError
import pandas as pd
import time

print('銘柄コードの上位1ケタを入力してください')
user_input_num = input()

up1_num = int(user_input_num)

f = open(f'./sql/{up1_num}xxx.sql', 'w')
for num in range(up1_num*1000, (up1_num+1)*1000):
    print(f'銘柄コード:{num}')
    my_share = share.Share(f'{num}.T')
    symbol_data = None

    try:
        symbol_data = my_share.get_historical(
            share.PERIOD_TYPE_YEAR, 50,
            share.FREQUENCY_TYPE_DAY, 1)
        print('データ取得成功')
        df = pd.DataFrame(symbol_data)
        if df.empty:
            continue
        df["datetime"] = pd.to_datetime(df.timestamp, unit="ms")
        for record in df.values:
            print(
                f'銘柄コード:{num} 日付:{record[6]} 始値:{record[1]} 高値:{record[2]} 安値:{record[3]} 終値:{record[4]} 出来高:{record[5]}')
            if numpy.isnan(record[1]) or numpy.isnan(record[2]) or numpy.isnan(record[3]) or numpy.isnan(record[4]):
                continue
            f.write(
                f'INSERT INTO `my_stock_database` VALUES (null, \'{num}\', \'{record[6]}\', {record[1]}, {record[2]}, {record[3]}, {record[4]}, {record[5]});\n')

    except YahooFinanceError as e:
        print('データ取得失敗')
        print(e.message)
    time.sleep(1)
f.close()

anonymous No title
VBA
'ブックモジュール
Option Explicit

Private Sub Workbook_Open()
    Application.OnKey "+^{c}", "inTotal"
    Application.OnKey "+^{+}", "plusTotal"
    Application.OnKey "+^{v}", "outTotal"
    Application.OnKey "+^{*}", "clearTotal"
End Sub


'標準モジュール
Option Explicit

Dim stackSum As Variant

Sub inTotal()
    stackSum = CDec(WorksheetFunction.Sum(Selection))
    Call showStatusBer(stackSum)
End Sub

Sub plusTotal()
    stackSum = stackSum + CDec(WorksheetFunction.Sum(Selection))
    Call showStatusBer(stackSum)
End Sub


Sub outTotal()
    Selection.Value = stackSum
End Sub

Sub clearTotal()
    stackSum = 0
    Application.StatusBar = False
End Sub

Sub showStatusBer(ByVal num As Variant)
    Dim len小数部 As Long:  len小数部 = Len(CStr(num)) - Len(CStr(Int(num))) - 1
    
    If len小数部 <= 0 Then
        Application.StatusBar = "Total = " & Format(num, "#,##0")
    Else
        Application.StatusBar = "Total = " & Format(num, "#,##0." & String(len小数部, "0"))
    End If

End Sub
anonymous No title
HTML
<LinearLayout
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
            <TextView
                android:textStyle="bold"
                android:paddingStart="32dp"
                android:layout_weight="6"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:textSize="30dp"
                android:textColor="@color/black"
                android:text="からだの症状"/>
            <TextView
                android:textStyle="bold"
                android:paddingEnd="32dp"
                android:textAlignment="textEnd"
                android:layout_weight="4"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:textSize="30dp"
                android:textColor="@color/black"
                android:text="1    2    3    4    5"/>
        </LinearLayout>

        <View
            android:layout_width="wrap_content"
            android:layout_height="1dp"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            android:visibility="visible"
            android:background="@color/black"/>

        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
            <TextView
                android:paddingStart="32dp"
                android:layout_weight="6"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:textSize="30dp"
                android:textColor="@color/black"
                android:text="目が疲れる"/>
            <LinearLayout
                android:gravity="right"
                android:layout_weight="4"
                android:orientation="horizontal"
                android:layout_width="match_parent"
                android:layout_height="wrap_content">
                <CheckBox
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"/>
                <CheckBox
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"/>
                <CheckBox
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"/>
                <CheckBox
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"/>
                <CheckBox
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"/>

            </LinearLayout>
        </LinearLayout>
anonymous No title
PHP
<!DOCTYPE html>
<html>
<head>
<title>kadai_1.php</title>
</head>
<body>

<h1><?php $str_hello="HTML内で";

echo "Hello World";?></h1>
</form>
</body>
</html>
anonymous No title
PHP


<form action = "kadai_1.php" method = "POST" >
<input type="text" name="comment">
<input type="submit" value="送信">
</form>

<?php
echo "あああ";

$file_handle = fopen( "test.txt", "w");
fwrite( $file_handle, "テスト2");
fclose($file_handle);
if (isset($_POST["comment"])) {
    echo $_POST["comment"];
}
?>