using System;
using System.Data.SqlClient;
class Program
{
static void Main()
{
string connectionString = "Your Connection String Here";
string checkCountQuery = "SELECT COUNT(*) FROM navigation";
string deleteQuery = @"
DELETE FROM navigation
WHERE navigation_id IN (
SELECT navigation_id
FROM navigation
ORDER BY [YourOrderColumn]
LIMIT (SELECT COUNT(*) - 10 FROM navigation)
)";
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
// テーブルの行数を確認
SqlCommand checkCountCommand = new SqlCommand(checkCountQuery, connection);
int rowCount = (int)checkCountCommand.ExecuteScalar();
if (rowCount > 10)
{
// 古いデータを削除
SqlCommand deleteCommand = new SqlCommand(deleteQuery, connection);
deleteCommand.ExecuteNonQuery();
}
}
}
}
// `navigation_id` は削除する navigation レコードの ID です。
string deleteManeuverQuery = "DELETE FROM maneuver WHERE navigation_id = @navigation_id";
string deleteNavigationQuery = "DELETE FROM navigation WHERE id = @navigation_id";
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
SqlCommand deleteManeuverCommand = new SqlCommand(deleteManeuverQuery, connection);
deleteManeuverCommand.Parameters.AddWithValue("@navigation_id", navigationId);
deleteManeuverCommand.ExecuteNonQuery();
SqlCommand deleteNavigationCommand = new SqlCommand(deleteNavigationQuery, connection);
deleteNavigationCommand.Parameters.AddWithValue("@navigation_id", navigationId);
deleteNavigationCommand.ExecuteNonQuery();
}
ALTER TABLE maneuver
ADD CONSTRAINT FK_maneuver_navigation
FOREIGN KEY (navigation_id) REFERENCES navigation(id) ON DELETE CASCADE;
#include <iostream>
#include <vector>
#include <algorithm> // std::sort, std::unique を使用するために必要
struct gridPos {
int x;
int y;
bool operator==(const gridPos& other) const {
return x == other.x && y == other.y;
}
bool operator<(const gridPos& other) const {
return x < other.x || (x == other.x && y < other.y);
}
};
int main() {
std::vector<LaNode> nodes = {
// ... ノードのデータをここに追加 ...
};
// gridPos のみを抽出する
std::vector<gridPos> allPositions;
for (const auto& node : nodes) {
allPositions.push_back(node.pos);
}
// 位置をソートする
std::sort(allPositions.begin(), allPositions.end());
// 重複を見つける
std::vector<gridPos> duplicates;
for (size_t i = 1; i < allPositions.size(); ++i) {
if (allPositions[i] == allPositions[i - 1]) {
// 重複を避けるために、前回と同じ要素でないことを確認
if (duplicates.empty() || duplicates.back() != allPositions[i]) {
duplicates.push_back(allPositions[i]);
}
}
}
// 重複している位置を出力
for (const auto& pos : duplicates) {
std::cout << "Duplicate position: (" << pos.x << ", " << pos.y << ")\n";
}
return 0;
}
bool compareGridPos(const gridPos& a, const gridPos& b) {
if (a.x < b.x) return true;
if (a.x > b.x) return false;
return a.y < b.y;
}
// すべての位置をソート
std::sort(allPositions.begin(), allPositions.end(), compareGridPos);
#include <iostream>
#include <vector>
struct gridPos {
int x;
int y;
};
const int MAX_X = 100; // X の最大値
const int MAX_Y = 100; // Y の最大値
std::vector<gridPos> findDuplicates(const std::vector<gridPos>& positions) {
std::vector<std::vector<int>> count(MAX_X, std::vector<int>(MAX_Y, 0));
std::vector<gridPos> duplicates;
// 各位置の出現回数をカウント
for (const auto& pos : positions) {
if (pos.x >= 0 && pos.x < MAX_X && pos.y >= 0 && pos.y < MAX_Y) {
count[pos.x][pos.y]++;
}
}
// 出現回数が2以上の位置を見つける
for (int x = 0; x < MAX_X; ++x) {
for (int y = 0; y < MAX_Y; ++y) {
if (count[x][y] > 1) {
duplicates.push_back({x, y});
}
}
}
return duplicates;
}
int main() {
std::vector<gridPos> positions = {
// ... ここに gridPos の要素を追加 ...
};
std::vector<gridPos> duplicates = findDuplicates(positions);
// 重複している位置を出力
for (const auto& pos : duplicates) {
std::cout << "Duplicate position: (" << pos.x << ", " << pos.y << ")\n";
}
return 0;
}
// ベクターをソート
std::sort(values.begin(), values.end());
// lower_bound を使用して value 以上の最小の要素を探す
auto lower = std::lower_bound(values.begin(), values.end(), value);
// lower が最初の要素を指している場合は、それが最も近い値です
if (lower == values.begin()) {
return *lower;
}
// lower が最後の要素の後ろを指している場合は、最後の要素が最も近い値です
if (lower == values.end()) {
return *(--lower);
}
// lower とその一つ前の要素との距離を比較
auto prev = lower - 1;
if ((value - *prev) <= (*lower - value)) {
return *prev;
} else {
return *lower;
}
import os
from pathlib import Path
from datetime import datetime
# フォルダパスを指定
folder_path = 'your/folder/path'
# 指定フォルダ内のmp4ファイルのパスを取得し、作成日時でソート
mp4_files = sorted(Path(folder_path).glob('*.mp4'), key=lambda x: x.stat().st_ctime)
# 結果を表示
for file in mp4_files:
print(f"{file} - Created: {datetime.fromtimestamp(file.stat().st_ctime)}")
# テキストファイルのパス
text_file_path = 'your/text/file.txt'
# テキストファイルを開き、改行ごとにリストに格納
with open(text_file_path, 'r', encoding='utf-8') as file:
lines = file.read().splitlines()
# リストの各要素を円マークで分割し、最後の要素のみを取得
processed_lines = [line.split('\\')[-1] for line in lines]
# 結果を表示
for line in processed_lines:
print(line)
import os
from pathlib import Path
# ステップ 1: mp4ファイルのパスを取得
folder_path = 'your/folder/path' # フォルダパスを指定
mp4_files = sorted(Path(folder_path).glob('*.mp4'), key=lambda x: x.stat().st_ctime)
# ステップ 2: ファイル名に使用するリストをテキストファイルから取得
text_file_path = 'your/text/file.txt'
with open(text_file_path, 'r', encoding='utf-8') as file:
new_names = file.read().splitlines()
# ステップ 3: mp4ファイルのファイル名を変更
for mp4_file, new_name in zip(mp4_files, new_names):
# 新しいファイルパスを生成
new_file_path = mp4_file.parent / f"{new_name}.mp4"
# ファイル名変更を実行
mp4_file.rename(new_file_path)
print(f"Renamed {mp4_file} to {new_file_path}")