feat: Fetch and filter puzzles from database
Browse filesThis view is limited to 50 files because it contains too many changes.
See raw diff
- .gitattributes +1 -0
- README.md +6 -14
- docs/best_1000_puzzles_by_theme.md +62 -0
- generate_puzzles.py +87 -0
- lichess_db_puzzles.csv +3 -0
- puzzles/advancedPawn.csv +0 -0
- puzzles/advantage.csv +0 -0
- puzzles/anastasiaMate.csv +0 -0
- puzzles/arabianMate.csv +0 -0
- puzzles/attackingF2F7.csv +0 -0
- puzzles/attraction.csv +0 -0
- puzzles/backRankMate.csv +0 -0
- puzzles/bishopEndgame.csv +0 -0
- puzzles/bodenMate.csv +0 -0
- puzzles/capturingDefender.csv +0 -0
- puzzles/castling.csv +0 -0
- puzzles/clearance.csv +0 -0
- puzzles/count_fen.sh +14 -0
- puzzles/crushing.csv +0 -0
- puzzles/defensiveMove.csv +0 -0
- puzzles/deflection.csv +0 -0
- puzzles/discoveredAttack.csv +0 -0
- puzzles/doubleBishopMate.csv +0 -0
- puzzles/doubleCheck.csv +0 -0
- puzzles/dovetailMate.csv +0 -0
- puzzles/endgame.csv +0 -0
- puzzles/equality.csv +0 -0
- puzzles/exposedKing.csv +0 -0
- puzzles/fork.csv +0 -0
- puzzles/hangingPiece.csv +0 -0
- puzzles/healthyMix.csv +0 -0
- puzzles/hookMate.csv +0 -0
- puzzles/interference.csv +0 -0
- puzzles/intermezzo.csv +0 -0
- puzzles/kingsideAttack.csv +0 -0
- puzzles/knightEndgame.csv +0 -0
- puzzles/long.csv +0 -0
- puzzles/master.csv +0 -0
- puzzles/masterVsMaster.csv +0 -0
- puzzles/mate.csv +0 -0
- puzzles/mateIn1.csv +0 -0
- puzzles/mateIn2.csv +0 -0
- puzzles/mateIn3.csv +0 -0
- puzzles/mateIn4.csv +0 -0
- puzzles/mateIn5.csv +0 -0
- puzzles/middlegame.csv +0 -0
- puzzles/oneMove.csv +0 -0
- puzzles/opening.csv +0 -0
- puzzles/pawnEndgame.csv +0 -0
- puzzles/pin.csv +0 -0
.gitattributes
ADDED
@@ -0,0 +1 @@
|
|
|
|
|
1 |
+
lichess_db_puzzles.csv filter=lfs diff=lfs merge=lfs -text
|
README.md
CHANGED
@@ -1,15 +1,3 @@
|
|
1 |
-
---
|
2 |
-
title: Chessli2
|
3 |
-
emoji: 🏰
|
4 |
-
colorFrom: blue
|
5 |
-
colorTo: red
|
6 |
-
sdk: gradio
|
7 |
-
app_file: src/chessli2/app.py
|
8 |
-
python_version: 3.11
|
9 |
-
pinned: True
|
10 |
-
---
|
11 |
-
|
12 |
-
|
13 |
# Welcome to Chessli2 🏰
|
14 |
|
15 |
[chessli2](https://github.com/pwenker/chessli2) is your **always free** and **open-source** chess trainer 🛡️, designed to elevate your game by allowing you to analyze games, identify mistakes, and sharpen your tactics, all sourced directly from [lichess.org](https://lichess.org/).
|
@@ -33,10 +21,14 @@ Chessli2 is here to support your journey to becoming a chess master. Dive in and
|
|
33 |
### 👉 Click here to try out the app directly without any setup:
|
34 |
[**Chessli2**](https://pwenker-chessli2.hf.space/)
|
35 |
|
|
|
36 |
### 🔍 Inspect code at:
|
37 |
- **GitHub:** [pwenker/chessli2](https://github.com/pwenker/chessli2)
|
38 |
- **Hugging Face Spaces:** [pwenker/chessli2](https://huggingface.co/spaces/pwenker/chessli2)
|
39 |
|
|
|
|
|
|
|
40 |
|
41 |
## Local Deployment 🏠
|
42 |
|
@@ -130,8 +122,8 @@ Finally, you can import the CSV file into Anki.
|
|
130 |
4. In the main Anki window, go to the menu bar and click on `File`.
|
131 |
5. Select `Import...` from the dropdown menu.
|
132 |
6. Browse to the location of your CSV file, select it, and click `Open`.
|
133 |
-
7. Anki will open a dialog box asking how you want to import the CSV file. Select the `Chess-2.0` note type.
|
134 |
-
8. Make sure it reads: "Field 1 of file is: mapped to PGN"
|
135 |
9. Click the `Import` button. Anki will process the file and add the new cards to the selected deck.
|
136 |
10. After importing, it’s a good idea to review a few cards to ensure they were imported correctly. You can do this by browsing the deck or starting a study session.
|
137 |
11. Pat yourself on the back! You did it! 🎉
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
# Welcome to Chessli2 🏰
|
2 |
|
3 |
[chessli2](https://github.com/pwenker/chessli2) is your **always free** and **open-source** chess trainer 🛡️, designed to elevate your game by allowing you to analyze games, identify mistakes, and sharpen your tactics, all sourced directly from [lichess.org](https://lichess.org/).
|
|
|
21 |
### 👉 Click here to try out the app directly without any setup:
|
22 |
[**Chessli2**](https://pwenker-chessli2.hf.space/)
|
23 |
|
24 |
+
|
25 |
### 🔍 Inspect code at:
|
26 |
- **GitHub:** [pwenker/chessli2](https://github.com/pwenker/chessli2)
|
27 |
- **Hugging Face Spaces:** [pwenker/chessli2](https://huggingface.co/spaces/pwenker/chessli2)
|
28 |
|
29 |
+
### 🌟 Best 1000 Puzzles for each Theme 🧩
|
30 |
+
|
31 |
+
📚 [Overview and links](https://github.com/pwenker/chessli2/docs/best_1000_puzzles_by_theme.md) 🔗
|
32 |
|
33 |
## Local Deployment 🏠
|
34 |
|
|
|
122 |
4. In the main Anki window, go to the menu bar and click on `File`.
|
123 |
5. Select `Import...` from the dropdown menu.
|
124 |
6. Browse to the location of your CSV file, select it, and click `Open`.
|
125 |
+
7. Anki will open a dialog box asking how you want to import the CSV file. Select the `Chess-2.0` note type. And select "Fields separated by: Comma".
|
126 |
+
8. Make sure it reads: "Field 1 of file is: mapped to PGN" (For the puzzles you can map the second field to "Tags")
|
127 |
9. Click the `Import` button. Anki will process the file and add the new cards to the selected deck.
|
128 |
10. After importing, it’s a good idea to review a few cards to ensure they were imported correctly. You can do this by browsing the deck or starting a study session.
|
129 |
11. Pat yourself on the back! You did it! 🎉
|
docs/best_1000_puzzles_by_theme.md
ADDED
@@ -0,0 +1,62 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
| Name | Description | Link to 1000 best puzzles |
|
2 |
+
|-------------------------|---------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------|
|
3 |
+
| Advanced pawn | One of your pawns is deep into the opponent position, maybe threatening to promote. | [Link to 1000 best puzzles](https://github.com/pwenker/chessli2/puzzles/advancedPawn.csv) |
|
4 |
+
| Advantage | Seize your chance to get a decisive advantage. (200cp ≤ eval ≤ 600cp) | [Link to 1000 best puzzles](https://github.com/pwenker/chessli2/puzzles/advantage.csv) |
|
5 |
+
| Anastasia's mate | A knight and rook or queen team up to trap the opposing king between the side of the board and a friendly piece. | [Link to 1000 best puzzles](https://github.com/pwenker/chessli2/puzzles/anastasiaMate.csv) |
|
6 |
+
| Arabian mate | A knight and a rook team up to trap the opposing king on a corner of the board. | [Link to 1000 best puzzles](https://github.com/pwenker/chessli2/puzzles/arabianMate.csv) |
|
7 |
+
| Attacking f2 or f7 | An attack focusing on the f2 or f7 pawn, such as in the fried liver opening. | [Link to 1000 best puzzles](https://github.com/pwenker/chessli2/puzzles/attackingF2F7.csv) |
|
8 |
+
| Attraction | An exchange or sacrifice encouraging or forcing an opponent piece to a square that allows a follow-up tactic. | [Link to 1000 best puzzles](https://github.com/pwenker/chessli2/puzzles/attraction.csv) |
|
9 |
+
| Back rank mate | Checkmate the king on the home rank, when it is trapped there by its own pieces. | [Link to 1000 best puzzles](https://github.com/pwenker/chessli2/puzzles/backRankMate.csv) |
|
10 |
+
| Bishop endgame | An endgame with only bishops and pawns. | [Link to 1000 best puzzles](https://github.com/pwenker/chessli2/puzzles/bishopEndgame.csv) |
|
11 |
+
| Boden's mate | Two attacking bishops on criss-crossing diagonals deliver mate to a king obstructed by friendly pieces. | [Link to 1000 best puzzles](https://github.com/pwenker/chessli2/puzzles/bodenMate.csv) |
|
12 |
+
| Castling | Bring the king to safety, and deploy the rook for attack. | [Link to 1000 best puzzles](https://github.com/pwenker/chessli2/puzzles/castling.csv) |
|
13 |
+
| Capture the defender | Removing a piece that is critical to defence of another piece, allowing the now undefended piece to be captured on a following move. | [Link to 1000 best puzzles](https://github.com/pwenker/chessli2/puzzles/capturingDefender.csv) |
|
14 |
+
| Crushing | Spot the opponent blunder to obtain a crushing advantage. (eval ≥ 600cp) | [Link to 1000 best puzzles](https://github.com/pwenker/chessli2/puzzles/crushing.csv) |
|
15 |
+
| Double bishop mate | Two attacking bishops on adjacent diagonals deliver mate to a king obstructed by friendly pieces. | [Link to 1000 best puzzles](https://github.com/pwenker/chessli2/puzzles/doubleBishopMate.csv) |
|
16 |
+
| Dovetail mate | A queen delivers mate to an adjacent king, whose only two escape squares are obstructed by friendly pieces. | [Link to 1000 best puzzles](https://github.com/pwenker/chessli2/puzzles/dovetailMate.csv) |
|
17 |
+
| Equality | Come back from a losing position, and secure a draw or a balanced position. (eval ≤ 200cp) | [Link to 1000 best puzzles](https://github.com/pwenker/chessli2/puzzles/equality.csv) |
|
18 |
+
| Kingside attack | An attack of the opponent's king, after they castled on the king side. | [Link to 1000 best puzzles](https://github.com/pwenker/chessli2/puzzles/kingsideAttack.csv) |
|
19 |
+
| Clearance | A move, often with tempo, that clears a square, file or diagonal for a follow-up tactical idea. | [Link to 1000 best puzzles](https://github.com/pwenker/chessli2/puzzles/clearance.csv) |
|
20 |
+
| Defensive move | A precise move or sequence of moves that is needed to avoid losing material or another advantage. | [Link to 1000 best puzzles](https://github.com/pwenker/chessli2/puzzles/defensiveMove.csv) |
|
21 |
+
| Deflection | A move that distracts an opponent piece from another duty that it performs, such as guarding a key square. Sometimes also called "overloading". | [Link to 1000 best puzzles](https://github.com/pwenker/chessli2/puzzles/deflection.csv) |
|
22 |
+
| Discovered attack | Moving a piece (such as a knight), that previously blocked an attack by a long range piece (such as a rook), out of the way of that piece. | [Link to 1000 best puzzles](https://github.com/pwenker/chessli2/puzzles/discoveredAttack.csv) |
|
23 |
+
| Double check | Checking with two pieces at once, as a result of a discovered attack where both the moving piece and the unveiled piece attack the opponent's king. | [Link to 1000 best puzzles](https://github.com/pwenker/chessli2/puzzles/doubleCheck.csv) |
|
24 |
+
| Endgame | A tactic during the last phase of the game. | [Link to 1000 best puzzles](https://github.com/pwenker/chessli2/puzzles/endgame.csv) |
|
25 |
+
| En passant | A tactic involving the en passant rule, where a pawn can capture an opponent pawn that has bypassed it using its initial two-square move. | [Link to 1000 best puzzles](https://github.com/pwenker/chessli2/puzzles/enPassant.csv) |
|
26 |
+
| Exposed king | A tactic involving a king with few defenders around it, often leading to checkmate. | [Link to 1000 best puzzles](https://github.com/pwenker/chessli2/puzzles/exposedKing.csv) |
|
27 |
+
| Fork | A move where the moved piece attacks two opponent pieces at once. | [Link to 1000 best puzzles](https://github.com/pwenker/chessli2/puzzles/fork.csv) |
|
28 |
+
| Hanging piece | A tactic involving an opponent piece being undefended or insufficiently defended and free to capture. | [Link to 1000 best puzzles](https://github.com/pwenker/chessli2/puzzles/hangingPiece.csv) |
|
29 |
+
| Hook mate | Checkmate with a rook, knight, and pawn along with one enemy pawn to limit the enemy king's escape. | [Link to 1000 best puzzles](https://github.com/pwenker/chessli2/puzzles/hookMate.csv) |
|
30 |
+
| Interference | Moving a piece between two opponent pieces to leave one or both opponent pieces undefended, such as a knight on a defended square between two rooks. | [Link to 1000 best puzzles](https://github.com/pwenker/chessli2/puzzles/interference.csv) |
|
31 |
+
| Intermezzo | Instead of playing the expected move, first interpose another move posing an immediate threat that the opponent must answer. Also known as "Zwischenzug" or "In between". | [Link to 1000 best puzzles](https://github.com/pwenker/chessli2/puzzles/intermezzo.csv) |
|
32 |
+
| Knight endgame | An endgame with only knights and pawns. | [Link to 1000 best puzzles](https://github.com/pwenker/chessli2/puzzles/knightEndgame.csv) |
|
33 |
+
| Long | Three moves to win. | [Link to 1000 best puzzles](https://github.com/pwenker/chessli2/puzzles/long.csv) |
|
34 |
+
| Master games | Puzzles from games played by titled players. | [Link to 1000 best puzzles](https://github.com/pwenker/chessli2/puzzles/master.csv) |
|
35 |
+
| Master vs Master games | Puzzles from games between two titled players. | [Link to 1000 best puzzles](https://github.com/pwenker/chessli2/puzzles/masterVsMaster.csv) |
|
36 |
+
| Checkmate | Win the game with style. | [Link to 1000 best puzzles](https://github.com/pwenker/chessli2/puzzles/mate.csv) |
|
37 |
+
| Mate in 1 | Deliver checkmate in one move. | [Link to 1000 best puzzles](https://github.com/pwenker/chessli2/puzzles/mateIn1.csv) |
|
38 |
+
| Mate in 2 | Deliver checkmate in two moves. | [Link to 1000 best puzzles](https://github.com/pwenker/chessli2/puzzles/mateIn2.csv) |
|
39 |
+
| Mate in 3 | Deliver checkmate in three moves. | [Link to 1000 best puzzles](https://github.com/pwenker/chessli2/puzzles/mateIn3.csv) |
|
40 |
+
| Mate in 4 | Deliver checkmate in four moves. | [Link to 1000 best puzzles](https://github.com/pwenker/chessli2/puzzles/mateIn4.csv) |
|
41 |
+
| Mate in 5 or more | Figure out a long mating sequence. | [Link to 1000 best puzzles](https://github.com/pwenker/chessli2/puzzles/mateIn5.csv) |
|
42 |
+
| Middlegame | A tactic during the second phase of the game. | [Link to 1000 best puzzles](https://github.com/pwenker/chessli2/puzzles/middlegame.csv) |
|
43 |
+
| One-move puzzle | A puzzle that is only one move long. | [Link to 1000 best puzzles](https://github.com/pwenker/chessli2/puzzles/oneMove.csv) |
|
44 |
+
| Opening | A tactic during the first phase of the game. | [Link to 1000 best puzzles](https://github.com/pwenker/chessli2/puzzles/opening.csv) |
|
45 |
+
| Pawn endgame | An endgame with only pawns. | [Link to 1000 best puzzles](https://github.com/pwenker/chessli2/puzzles/pawnEndgame.csv) |
|
46 |
+
| Pin | A tactic involving pins, where a piece is unable to move without revealing an attack on a higher value piece. | [Link to 1000 best puzzles](https://github.com/pwenker/chessli2/puzzles/pin.csv) |
|
47 |
+
| Promotion | Promote one of your pawn to a queen or minor piece. | [Link to 1000 best puzzles](https://github.com/pwenker/chessli2/puzzles/promotion.csv) |
|
48 |
+
| Queen endgame | An endgame with only queens and pawns. | [Link to 1000 best puzzles](https://github.com/pwenker/chessli2/puzzles/queenEndgame.csv) |
|
49 |
+
| Queen and Rook | An endgame with only queens, rooks and pawns. | [Link to 1000 best puzzles](https://github.com/pwenker/chessli2/puzzles/queenRookEndgame.csv) |
|
50 |
+
| Queenside attack | An attack of the opponent's king, after they castled on the queen side. | [Link to 1000 best puzzles](https://github.com/pwenker/chessli2/puzzles/queensideAttack.csv) |
|
51 |
+
| Quiet move | A move that does neither make a check or capture, nor an immediate threat to capture, but does prepare a more hidden unavoidable threat for a later move. | [Link to 1000 best puzzles](https://github.com/pwenker/chessli2/puzzles/quietMove.csv) |
|
52 |
+
| Rook endgame | An endgame with only rooks and pawns. | [Link to 1000 best puzzles](https://github.com/pwenker/chessli2/puzzles/rookEndgame.csv) |
|
53 |
+
| Sacrifice | A tactic involving giving up material in the short-term, to gain an advantage again after a forced sequence of moves. | [Link to 1000 best puzzles](https://github.com/pwenker/chessli2/puzzles/sacrifice.csv) |
|
54 |
+
| Short | Two moves to win. | [Link to 1000 best puzzles](https://github.com/pwenker/chessli2/puzzles/short.csv) |
|
55 |
+
| Skewer | A motif involving a high value piece being attacked, moving out the way, and allowing a lower value piece behind it to be captured or attacked, the inverse of a pin. | [Link to 1000 best puzzles](https://github.com/pwenker/chessli2/puzzles/skewer.csv) |
|
56 |
+
| Smothered mate | A checkmate delivered by a knight in which the mated king is unable to move because it is surrounded (or smothered) by its own pieces. | [Link to 1000 best puzzles](https://github.com/pwenker/chessli2/puzzles/smotheredMate.csv) |
|
57 |
+
| Super GM games | Puzzles from games played by the best players in the world. | [Link to 1000 best puzzles](https://github.com/pwenker/chessli2/puzzles/superGM.csv) |
|
58 |
+
| Trapped piece | A piece is unable to escape capture as it has limited moves. | [Link to 1000 best puzzles](https://github.com/pwenker/chessli2/puzzles/trappedPiece.csv) |
|
59 |
+
| Underpromotion | Promotion to a knight, bishop, or rook. | [Link to 1000 best puzzles](https://github.com/pwenker/chessli2/puzzles/underPromotion.csv) |
|
60 |
+
| Very long | Four moves or more to win. | [Link to 1000 best puzzles](https://github.com/pwenker/chessli2/puzzles/veryLong.csv) |
|
61 |
+
| X-Ray attack | A piece attacks or defends a square, through an enemy piece. | [Link to 1000 best puzzles](https://github.com/pwenker/chessli2/puzzles/xRayAttack.csv) |
|
62 |
+
| Zugzwang | The opponent is limited in the moves they can make, and all moves worsen their position. | [Link to 1000 best puzzles](https://github.com/pwenker/chessli2/puzzles/zugzwang.csv) |
|
generate_puzzles.py
ADDED
@@ -0,0 +1,87 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import shutil
|
2 |
+
from pathlib import Path
|
3 |
+
|
4 |
+
from gradio_client import Client
|
5 |
+
from tqdm import tqdm
|
6 |
+
|
7 |
+
themes = [
|
8 |
+
"advancedPawn",
|
9 |
+
"advantage",
|
10 |
+
"anastasiaMate",
|
11 |
+
"arabianMate",
|
12 |
+
"attackingF2F7",
|
13 |
+
"attraction",
|
14 |
+
"backRankMate",
|
15 |
+
"bishopEndgame",
|
16 |
+
"bodenMate",
|
17 |
+
"castling",
|
18 |
+
"capturingDefender",
|
19 |
+
"crushing",
|
20 |
+
"doubleBishopMate",
|
21 |
+
"dovetailMate",
|
22 |
+
"equality",
|
23 |
+
"kingsideAttack",
|
24 |
+
"clearance",
|
25 |
+
"defensiveMove",
|
26 |
+
"deflection",
|
27 |
+
"discoveredAttack",
|
28 |
+
"doubleCheck",
|
29 |
+
"endgame",
|
30 |
+
"exposedKing",
|
31 |
+
"fork",
|
32 |
+
"hangingPiece",
|
33 |
+
"hookMate",
|
34 |
+
"interference",
|
35 |
+
"intermezzo",
|
36 |
+
"knightEndgame",
|
37 |
+
"long",
|
38 |
+
"master",
|
39 |
+
"masterVsMaster",
|
40 |
+
"mate",
|
41 |
+
"mateIn1",
|
42 |
+
"mateIn2",
|
43 |
+
"mateIn3",
|
44 |
+
"mateIn4",
|
45 |
+
"mateIn5",
|
46 |
+
"middlegame",
|
47 |
+
"oneMove",
|
48 |
+
"opening",
|
49 |
+
"pawnEndgame",
|
50 |
+
"pin",
|
51 |
+
"promotion",
|
52 |
+
"queenEndgame",
|
53 |
+
"queenRookEndgame",
|
54 |
+
"queensideAttack",
|
55 |
+
"quietMove",
|
56 |
+
"rookEndgame",
|
57 |
+
"sacrifice",
|
58 |
+
"short",
|
59 |
+
"skewer",
|
60 |
+
"smotheredMate",
|
61 |
+
"superGM",
|
62 |
+
"trappedPiece",
|
63 |
+
"underPromotion",
|
64 |
+
"veryLong",
|
65 |
+
"xRayAttack",
|
66 |
+
"zugzwang",
|
67 |
+
"healthyMix",
|
68 |
+
"playerGames",
|
69 |
+
]
|
70 |
+
client = Client("http://localhost:7860/")
|
71 |
+
|
72 |
+
|
73 |
+
for theme in tqdm(themes, desc="Generating puzzles...", total=len(themes)):
|
74 |
+
csv_data, csv_file = client.predict(
|
75 |
+
themes=[theme],
|
76 |
+
popularity_range=[80, 100],
|
77 |
+
rating_range=[0, 4000],
|
78 |
+
nb_plays_range=[0, 1007625],
|
79 |
+
opening_tags=None,
|
80 |
+
max=1000,
|
81 |
+
api_name="/get_puzzles_from_db",
|
82 |
+
)
|
83 |
+
|
84 |
+
src = csv_file["value"]
|
85 |
+
dest = f"puzzles/{theme}.csv"
|
86 |
+
|
87 |
+
shutil.copy(Path(src), dest)
|
lichess_db_puzzles.csv
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:66732175bcaeb29249a17bbc99854b1b096ccf7a27fd0237e125ecf03e31face
|
3 |
+
size 716070952
|
puzzles/advancedPawn.csv
ADDED
The diff for this file is too large to render.
See raw diff
|
|
puzzles/advantage.csv
ADDED
The diff for this file is too large to render.
See raw diff
|
|
puzzles/anastasiaMate.csv
ADDED
The diff for this file is too large to render.
See raw diff
|
|
puzzles/arabianMate.csv
ADDED
The diff for this file is too large to render.
See raw diff
|
|
puzzles/attackingF2F7.csv
ADDED
The diff for this file is too large to render.
See raw diff
|
|
puzzles/attraction.csv
ADDED
The diff for this file is too large to render.
See raw diff
|
|
puzzles/backRankMate.csv
ADDED
The diff for this file is too large to render.
See raw diff
|
|
puzzles/bishopEndgame.csv
ADDED
The diff for this file is too large to render.
See raw diff
|
|
puzzles/bodenMate.csv
ADDED
The diff for this file is too large to render.
See raw diff
|
|
puzzles/capturingDefender.csv
ADDED
The diff for this file is too large to render.
See raw diff
|
|
puzzles/castling.csv
ADDED
The diff for this file is too large to render.
See raw diff
|
|
puzzles/clearance.csv
ADDED
The diff for this file is too large to render.
See raw diff
|
|
puzzles/count_fen.sh
ADDED
@@ -0,0 +1,14 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
#!/bin/bash
|
2 |
+
|
3 |
+
# Directory to search files in
|
4 |
+
DIRECTORY="."
|
5 |
+
|
6 |
+
# Iterate through all files in the directory
|
7 |
+
for file in "$DIRECTORY"/*; do
|
8 |
+
if [ -f "$file" ]; then
|
9 |
+
# Count the number of lines containing "FEN"
|
10 |
+
count=$(grep -c "FEN" "$file")
|
11 |
+
# Print the filename and the count
|
12 |
+
echo "$file: $count"
|
13 |
+
fi
|
14 |
+
done
|
puzzles/crushing.csv
ADDED
The diff for this file is too large to render.
See raw diff
|
|
puzzles/defensiveMove.csv
ADDED
The diff for this file is too large to render.
See raw diff
|
|
puzzles/deflection.csv
ADDED
The diff for this file is too large to render.
See raw diff
|
|
puzzles/discoveredAttack.csv
ADDED
The diff for this file is too large to render.
See raw diff
|
|
puzzles/doubleBishopMate.csv
ADDED
The diff for this file is too large to render.
See raw diff
|
|
puzzles/doubleCheck.csv
ADDED
The diff for this file is too large to render.
See raw diff
|
|
puzzles/dovetailMate.csv
ADDED
The diff for this file is too large to render.
See raw diff
|
|
puzzles/endgame.csv
ADDED
The diff for this file is too large to render.
See raw diff
|
|
puzzles/equality.csv
ADDED
The diff for this file is too large to render.
See raw diff
|
|
puzzles/exposedKing.csv
ADDED
The diff for this file is too large to render.
See raw diff
|
|
puzzles/fork.csv
ADDED
The diff for this file is too large to render.
See raw diff
|
|
puzzles/hangingPiece.csv
ADDED
The diff for this file is too large to render.
See raw diff
|
|
puzzles/healthyMix.csv
ADDED
The diff for this file is too large to render.
See raw diff
|
|
puzzles/hookMate.csv
ADDED
The diff for this file is too large to render.
See raw diff
|
|
puzzles/interference.csv
ADDED
The diff for this file is too large to render.
See raw diff
|
|
puzzles/intermezzo.csv
ADDED
The diff for this file is too large to render.
See raw diff
|
|
puzzles/kingsideAttack.csv
ADDED
The diff for this file is too large to render.
See raw diff
|
|
puzzles/knightEndgame.csv
ADDED
The diff for this file is too large to render.
See raw diff
|
|
puzzles/long.csv
ADDED
The diff for this file is too large to render.
See raw diff
|
|
puzzles/master.csv
ADDED
The diff for this file is too large to render.
See raw diff
|
|
puzzles/masterVsMaster.csv
ADDED
The diff for this file is too large to render.
See raw diff
|
|
puzzles/mate.csv
ADDED
The diff for this file is too large to render.
See raw diff
|
|
puzzles/mateIn1.csv
ADDED
The diff for this file is too large to render.
See raw diff
|
|
puzzles/mateIn2.csv
ADDED
The diff for this file is too large to render.
See raw diff
|
|
puzzles/mateIn3.csv
ADDED
The diff for this file is too large to render.
See raw diff
|
|
puzzles/mateIn4.csv
ADDED
The diff for this file is too large to render.
See raw diff
|
|
puzzles/mateIn5.csv
ADDED
The diff for this file is too large to render.
See raw diff
|
|
puzzles/middlegame.csv
ADDED
The diff for this file is too large to render.
See raw diff
|
|
puzzles/oneMove.csv
ADDED
The diff for this file is too large to render.
See raw diff
|
|
puzzles/opening.csv
ADDED
The diff for this file is too large to render.
See raw diff
|
|
puzzles/pawnEndgame.csv
ADDED
The diff for this file is too large to render.
See raw diff
|
|
puzzles/pin.csv
ADDED
The diff for this file is too large to render.
See raw diff
|
|