Skip to content

Instantly share code, notes, and snippets.

@kujirahand
kujirahand / main.rs
Created February 24, 2024 16:17
k近傍法を使って、アヤメの分類を行うプログラム
// k近傍法(k-nn)によるアヤメの分類プログラム
use rand::seq::SliceRandom;
// データとラベルを持つ構造体を定義 --- (*1)
#[derive(Debug, Clone)]
struct KnnItem {
data: Vec<f64>,
label: String,
}
// k近傍法でデータを予測する --- (*2)
fn knn_predict(items: &[KnnItem], test: &[f64], k: usize) -> String {
@kujirahand
kujirahand / iris.csv
Last active February 24, 2024 12:50
iris.csv for ml-test (CC BY 4.0)
sepal_length sepal_width petal_length petal_width class
5.1 3.5 1.4 0.2 Iris-setosa
4.9 3.0 1.4 0.2 Iris-setosa
4.7 3.2 1.3 0.2 Iris-setosa
4.6 3.1 1.5 0.2 Iris-setosa
5.0 3.6 1.4 0.2 Iris-setosa
5.4 3.9 1.7 0.4 Iris-setosa
4.6 3.4 1.4 0.3 Iris-setosa
5.0 3.4 1.5 0.2 Iris-setosa
4.4 2.9 1.4 0.2 Iris-setosa
@kujirahand
kujirahand / server.js
Created February 6, 2024 16:20
Node.jsとChatGPT APIを使った翻訳ツール
// ライブラリを読み込む --- (*1)
const express = require('express');
const OpenAI = require('openai')
const path = require('path')
// APIキーを設定する(以下は書き換えが必要です★★★) --- (*2)
const API_KEY = 'xxx'
// const API_KEY = process.env['OPENAI_API_KEY']
// APIキーを設定したオブジェクトを生成
const openai = new OpenAI({ apiKey: API_KEY });
@kujirahand
kujirahand / crc32__main.rs
Last active January 19, 2024 11:13
CRC32を計算するプログラム - キャッシュテーブルを利用する例
// CRC-32のためのキャッシュテーブルを作成する関数 --- (*1)
fn crc32_table() -> [u32; 256] {
// テーブルを0で初期化
let mut table: [u32; 256] = [0; 256];
let crc32poly:u32 = 0xEDB88320;
// 0-255の各値について繰り返し計算を行う --- (*2)
for i in 0..256 {
let mut crc:u32 = i as u32; // 値を初期化
// 8回(8ビット分)繰り返す --- (*4)
for _ in 0..8 {
@kujirahand
kujirahand / main.rs
Created January 19, 2024 05:42
CRC-32を計算するRustのプログラム
// CRC-32を計算する関数
fn crc32(bin_data: &[u8]) -> u32 {
let crc32poly:u32 = 0xEDB88320;
// CRC-32の初期値 --- (*1)
let mut crc:u32 = 0xFFFFFFFF;
// バイト列の各バイトについて繰り返し計算を行う --- (*2)
for byte in bin_data {
// XORを行う --- (*3)
crc ^= *byte as u32;
import datetime
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication
from email import encoders
from googleapiclient.discovery import build
from google.auth import load_credentials_from_file
# クレデンシャルファイルのパスを指定 --- (*1)
@kujirahand
kujirahand / countdown.py
Last active January 14, 2024 14:25
Google Calendar APIを使ってカウントダウン
import os
import datetime
from googleapiclient.discovery import build
from google.auth import load_credentials_from_file
# クレデンシャルファイルのパスを指定 --- (*1)
CREDENTIALS_PATH = 'credentials.json'
# カレンダーIDを指定 --- (*2)
CALENDAR_ID = '28e4bb3f327eb238d29a282e9935fc957c40bb3e63ae831b9ecc935bee67efed@group.calendar.google.com'
# スコープの指定
@kujirahand
kujirahand / fizzbuzz.tcl
Created January 4, 2024 03:29
Tcl/TkでFizzBuzz
# メインウィンドウの初期化 --- (*1)
wm title . "FizzBuzz"
wm geometry . 600x400
# fizzbuzz関数を定義 --- (*2)
proc fizzbuzz { n } {
# 変数$nがFizzかBuzzかを判定 --- (*2)
set is_fizz [expr {($n % 3) == 0}]
set is_buzz [expr {($n % 5) == 0}]
# 判定結果に応じて結果を返す --- (*3)
@kujirahand
kujirahand / format1.md
Last active December 25, 2023 12:34
ChatGPTが出力可能なフォーマット

もちろんです。以下に、20種類以上の出力可能なデータフォーマットをマークダウン表形式で列挙します。

データ形式名 拡張子 説明
CSV .csv カンマと改行で二次元のデータを出力
JSON .json 構造化されたデータを出力
XML .xml 拡張可能なマークアップ言語でデータを出力
HTML .html Webページとして表示できるマークアップ言語
TXT .txt プレーンテキストフォーマット
PDF .pdf 印刷向けに固定レイアウトの文書を出力
@kujirahand
kujirahand / index.js
Last active December 22, 2023 11:21
ChatGPT APIを使ったアイデア発想ツール
const express = require('express');
const OpenAI = require('openai')
// APIキーを設定する(以下は書き換えが必要です★★★) --- (*1)
const API_KEY = 'xxx'
// APIキーを設定したオブジェクトを生成
const openai = new OpenAI({
apiKey: (API_KEY === 'xxx') ? process.env['OPENAI_API_KEY'] : API_KEY
});
// ChatGPT APIを呼び出す --- (*2)
async function callChatgpt(msg) {