Skip to content

Commit 46f7cd3

Browse files
committed
Fix CSS loading: update SRI hashes, add Prism JS, use Tailwind Play CDN; rename HuckerRank to HackerRank
1 parent c96de28 commit 46f7cd3

7 files changed

Lines changed: 85 additions & 43 deletions

File tree

JavaScript/2624. Snail Traversal/Claude Code Sonnet 4.5/README_react.html

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,8 @@
55
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
66
<title>LeetCode: Snail Traversal - 蛇行パターンで1D→2D配列変換</title>
77

8-
<!-- Tailwind CSS -->
9-
<script
10-
src="https://cdn.tailwindcss.com/3.4.1"
11-
crossorigin="anonymous"
12-
></script>
8+
<!-- Tailwind CSS (Play CDN - SRI非対応) -->
9+
<script src="https://cdn.tailwindcss.com"></script>
1310

1411
<!-- Google Fonts -->
1512
<link rel="preconnect" href="https://fonts.googleapis.com" />
@@ -23,19 +20,19 @@
2320
<link
2421
href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/themes/prism-tomorrow.min.css"
2522
rel="stylesheet"
26-
integrity="sha384-wFjoQjtV1y5jVHbt0p35Ui8aV8GVpEZkyF99OXWqP/eNJDU93D3Ugxkoyh6Y2I4"
23+
integrity="sha384-wFjoQjtV1y5jVHbt0p35Ui8aV8GVpEZkyF99OXWqP/eNJDU93D3Ugxkoyh6Y2I4A"
2724
crossorigin="anonymous"
2825
/>
2926
<link
3027
href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/plugins/line-numbers/prism-line-numbers.min.css"
3128
rel="stylesheet"
32-
integrity="sha384-AnUkTNLI8COlMCRJ0FHIdX76If83145OTCLUx4gQyfnO0gGeO/sD9czGEUBxtkUU"
29+
integrity="sha384-nUkTNLI8COlMCRJ0FHIdX76If83145OTCLUx4gQyfnO0gGeO/sD9czGEUBxtkcUv"
3330
crossorigin="anonymous"
3431
/>
3532
<link
3633
href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/plugins/toolbar/prism-toolbar.min.css"
3734
rel="stylesheet"
38-
integrity="sha384-vEUzJ34/1CCeefTGUKLgvA5Z/vYIwi+Jyu8aAaCfFDxfwZ3Xs3OfkkIeegsLRM11"
35+
integrity="sha384-EUzJ34/1CCeefTGUKLgvA5Z/vYIwi+Jyu8aAaCfFDxfwZ3Xs3OfkkIeegsLRM11e"
3936
crossorigin="anonymous"
4037
/>
4138

Mathematics/Number Theory/HuckerRank/Easy/Constructing_a_Number.ipynb renamed to Mathematics/Number Theory/HackerRank/Easy/Constructing_a_Number.ipynb

File renamed without changes.

Mathematics/Number Theory/HuckerRank/Easy/Primitive_Problem.html renamed to Mathematics/Number Theory/HackerRank/Easy/Primitive_Problem.html

Lines changed: 34 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,8 @@
55
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
66
<title>原始根の発見 - HackerRank問題解説</title>
77

8-
<!-- Tailwind CSS -->
9-
<!-- Tailwind CSS -->
10-
<script
11-
src="https://cdn.tailwindcss.com/3.4.1"
12-
integrity="sha384-rMhvFknC0AhqKZXwSCyPeIirpE1IhTafmLXTvTCai5pxjAqFcqEAAqKH/2lXrFVP"
13-
crossorigin="anonymous"
14-
></script>
8+
<!-- Tailwind CSS (Play CDN - SRI非対応) -->
9+
<script src="https://cdn.tailwindcss.com"></script>
1510

1611
<!-- Google Fonts -->
1712
<link rel="preconnect" href="https://fonts.googleapis.com" />
@@ -25,14 +20,20 @@
2520
<link
2621
rel="stylesheet"
2722
href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/themes/prism-tomorrow.min.css"
23+
integrity="sha384-wFjoQjtV1y5jVHbt0p35Ui8aV8GVpEZkyF99OXWqP/eNJDU93D3Ugxkoyh6Y2I4A"
24+
crossorigin="anonymous"
2825
/>
2926
<link
3027
rel="stylesheet"
3128
href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/plugins/line-numbers/prism-line-numbers.min.css"
29+
integrity="sha384-nUkTNLI8COlMCRJ0FHIdX76If83145OTCLUx4gQyfnO0gGeO/sD9czGEUBxtkcUv"
30+
crossorigin="anonymous"
3231
/>
3332
<link
3433
rel="stylesheet"
3534
href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/plugins/toolbar/prism-toolbar.min.css"
35+
integrity="sha384-EUzJ34/1CCeefTGUKLgvA5Z/vYIwi+Jyu8aAaCfFDxfwZ3Xs3OfkkIeegsLRM11e"
36+
crossorigin="anonymous"
3637
/>
3738

3839
<!-- React & ReactDOM -->
@@ -2325,5 +2326,31 @@ <h3 className="mt-0 text-teal-800 text-xl font-semibold">
23252326
const root = ReactDOM.createRoot(document.getElementById('react-steps-root'));
23262327
root.render(<StepsComponent />);
23272328
</script>
2329+
<!-- Prism.js & Plugins (SRI Protected) -->
2330+
<script
2331+
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/prism.min.js"
2332+
integrity="sha384-06z5D//U/xpvxZHuUz92xBvq3DqBBFi7Up53HRrbV7Jlv7Yvh/MZ7oenfUe9iCEt"
2333+
crossorigin="anonymous"
2334+
></script>
2335+
<script
2336+
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/components/prism-python.min.js"
2337+
integrity="sha384-WJdEkJKrbsqw0evQ4GB6mlsKe5cGTxBOw4KAEIa52ZLB7DDpliGkwdme/HMa5n1m"
2338+
crossorigin="anonymous"
2339+
></script>
2340+
<script
2341+
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/plugins/line-numbers/prism-line-numbers.min.js"
2342+
integrity="sha384-6QJu8apxMmB9TiPVWzYKF5pRgKcz7snO0/QU+MrWmgBLECQjoa6erxX2VQ5t41Jd"
2343+
crossorigin="anonymous"
2344+
></script>
2345+
<script
2346+
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/plugins/toolbar/prism-toolbar.min.js"
2347+
integrity="sha384-jC1G68eGEXJpPwMDNqyIUQsQlcUCdCU+a7GGuoV4TUZvM1gLYTMJUDvqBnxtZLWA"
2348+
crossorigin="anonymous"
2349+
></script>
2350+
<script
2351+
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/plugins/copy-to-clipboard/prism-copy-to-clipboard.min.js"
2352+
integrity="sha384-ZdEfx8sYX8i4IVXU1tUbqwOp4PBUCCmnpagpiHchnstXkEczkzPfUd9fvBrntM+F"
2353+
crossorigin="anonymous"
2354+
></script>
23282355
</body>
23292356
</html>

Mathematics/Number Theory/HuckerRank/Easy/Primitive_Problem.ipynb renamed to Mathematics/Number Theory/HackerRank/Easy/Primitive_Problem.ipynb

Lines changed: 24 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@
5757
"def prime_factors(n: int) -> List[int]:\n",
5858
" \"\"\"\n",
5959
" nの素因数をリストで返す(重複なし)\n",
60-
" \n",
60+
"\n",
6161
" Time Complexity: O(√n)\n",
6262
" \"\"\"\n",
6363
" factors = []\n",
@@ -66,7 +66,7 @@
6666
" factors.append(2)\n",
6767
" while n % 2 == 0:\n",
6868
" n //= 2\n",
69-
" \n",
69+
"\n",
7070
" # 3以降の奇数でチェック\n",
7171
" i = 3\n",
7272
" while i * i <= n:\n",
@@ -75,50 +75,50 @@
7575
" while n % i == 0:\n",
7676
" n //= i\n",
7777
" i += 2\n",
78-
" \n",
78+
"\n",
7979
" # nが1より大きければ、それ自体が素数\n",
8080
" if n > 1:\n",
8181
" factors.append(n)\n",
82-
" \n",
82+
"\n",
8383
" return factors\n",
8484
"\n",
8585
"def is_primitive_root(g: int, p: int, prime_divisors: List[int]) -> bool:\n",
8686
" \"\"\"\n",
8787
" gがpの原始根かどうかを判定\n",
88-
" \n",
88+
"\n",
8989
" Args:\n",
9090
" g: 判定対象の整数\n",
9191
" p: 素数\n",
9292
" prime_divisors: (p-1)の素因数リスト\n",
93-
" \n",
93+
"\n",
9494
" Returns:\n",
9595
" gが原始根ならTrue\n",
96-
" \n",
96+
"\n",
9797
" Time Complexity: O(d·log p) where d = len(prime_divisors)\n",
9898
" \"\"\"\n",
9999
" phi = p - 1\n",
100-
" \n",
100+
"\n",
101101
" # 各素因数qについて、g^((p-1)/q) ≢ 1 (mod p) を確認\n",
102102
" for q in prime_divisors:\n",
103103
" if pow(g, phi // q, p) == 1:\n",
104104
" return False\n",
105-
" \n",
105+
"\n",
106106
" return True\n",
107107
"\n",
108108
"def euler_phi(n: int) -> int:\n",
109109
" \"\"\"\n",
110110
" オイラーのトーシェント関数 φ(n) を計算\n",
111-
" \n",
111+
"\n",
112112
" Time Complexity: O(√n)\n",
113113
" \"\"\"\n",
114114
" result = n\n",
115-
" \n",
115+
"\n",
116116
" # 2で割り切れる場合\n",
117117
" if n % 2 == 0:\n",
118118
" while n % 2 == 0:\n",
119119
" n //= 2\n",
120120
" result -= result // 2\n",
121-
" \n",
121+
"\n",
122122
" # 3以降の奇数でチェック\n",
123123
" p = 3\n",
124124
" while p * p <= n:\n",
@@ -127,50 +127,46 @@
127127
" n //= p\n",
128128
" result -= result // p\n",
129129
" p += 2\n",
130-
" \n",
130+
"\n",
131131
" if n > 1:\n",
132132
" result -= result // n\n",
133-
" \n",
133+
"\n",
134134
" return result\n",
135135
"\n",
136136
"def solve_competitive(p: int) -> tuple:\n",
137137
" \"\"\"\n",
138138
" 競技プログラミング向け実装\n",
139-
" \n",
139+
"\n",
140140
" Args:\n",
141141
" p: 素数\n",
142-
" \n",
142+
"\n",
143143
" Returns:\n",
144144
" (最小原始根, 原始根の総数)\n",
145-
" \n",
146-
" Time Complexity: O(√p + k·d·log p) \n",
145+
"\n",
146+
" Time Complexity: O(√p + k·d·log p)\n",
147147
" where k = 最小原始根の値, d = (p-1)の素因数の個数\n",
148148
" Space Complexity: O(d)\n",
149149
" \"\"\"\n",
150-
" # 特異ケース: p=2\n",
151-
" if p == 2:\n",
152-
" return 1, 1\n",
153-
" \n",
154150
" # (p-1)の素因数を求める\n",
155151
" prime_divisors = prime_factors(p - 1)\n",
156-
" \n",
152+
"\n",
157153
" # 最小原始根を探索\n",
158154
" smallest_root = 0\n",
159155
" for g in range(2, p):\n",
160156
" if is_primitive_root(g, p, prime_divisors):\n",
161157
" smallest_root = g\n",
162158
" break\n",
163-
" \n",
159+
"\n",
164160
" # 原始根の総数 = φ(p-1)\n",
165161
" total_count = euler_phi(p - 1)\n",
166-
" \n",
162+
"\n",
167163
" return smallest_root, total_count\n",
168164
"\n",
169165
"if __name__ == '__main__':\n",
170-
" p = int(input().strip())\n",
166+
" # p = int(input().strip())\n",
171167
" # テスト用入力\n",
172-
" # p = 7\n",
173-
" \n",
168+
" p = 7\n",
169+
"\n",
174170
" smallest, total = solve_competitive(p)\n",
175171
" print(f\"{smallest} {total}\")"
176172
]

Mathematics/Number Theory/HuckerRank/Easy/Sherlock_and_GCD.ipynb renamed to Mathematics/Number Theory/HackerRank/Easy/Sherlock_and_GCD.ipynb

File renamed without changes.

Mathematics/Number Theory/HuckerRank/Medium/Closest_Number.ipynb renamed to Mathematics/Number Theory/HackerRank/Medium/Closest_Number.ipynb

File renamed without changes.

verify_sri.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import hashlib
2+
import requests
3+
import base64
4+
5+
urls = [
6+
"https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/themes/prism-tomorrow.min.css",
7+
"https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/plugins/line-numbers/prism-line-numbers.min.css",
8+
"https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/plugins/toolbar/prism-toolbar.min.css",
9+
"https://cdn.tailwindcss.com/3.4.1"
10+
]
11+
12+
for url in urls:
13+
try:
14+
response = requests.get(url)
15+
content = response.content
16+
hash_obj = hashlib.sha384(content)
17+
base64_hash = base64.b64encode(hash_obj.digest()).decode('utf-8')
18+
print(f"URL: {url}")
19+
print(f"SRI: sha384-{base64_hash}")
20+
print("-" * 20)
21+
except Exception as e:
22+
print(f"Error fetching {url}: {e}")

0 commit comments

Comments
 (0)