Oktober Dah

Anmeldelse af October Daye, af #SeananMcGuire. Serie. 2025. Hugo-finalist.

Nebula nominees . Hugo finalists .

Jeg har læst den her serie, bind 1-18, henover mange måneder, fordi serien før har været en finalist. Nu er bind 19 kommet til, så jeg har læst det også. Alle bøgerne er propfulde af små referater af tidligere begivenheder, og nu, hvor jeg læser bøgerne i en mere normal rytme (bind 18 og 19 udkom med ca. 2 års mellemrum), så er det dejligt.

Skitse: Toby er 8 måneder henne og har svært ved alting: gå, stå, leve uden konstant adgang til toilettet. Hendes mand, Tybalt, er af forskellige årsager vildt overbeskyttende, og resten af familien opfører sig på samme måde. Toby, der normalt er meget udfarende, er ved at gå i spåner over at have levet sådan i ca. 4 måneder. Så da dronningen over det lokale, lille faerie-land sender hende på en mission (der er blevet stjålet en hel masse af dronningens ejendele, inklusive magiske ting, der kan tippe magtbalancen voldsomt), så siger hun selvfølgelig ja. Familien sukker dybt.

Er det science fiction? Nej. Fantasy, baby.

Temaer: Toby kommer altid voldsomt til skade i de her bøger. Hun får det også bedre igen, bevares, men altså, blod ud over det hele. Således også den her gang. Første gang fordi hun er blevet bundet til en seng og dels trækker en hånd gennem en løkke, der er for lille, dels med vilje forstuver sin skulder.

Selvfølgelig er der noget på færde med udfarende/overbeskyttende. Begge sider skal indse, hvordan de selv er skruet sammen og trække lidt fra, fordi de overdriver.

Som sædvanlig er der ingen mangel på magtkampe osv. Det er lidt specielt i faerie, fordi alle lever så længe. Det er helt normalt at tage blodig hævn over noget, der skete for 200 år siden.

Som altid så skal vi også lære lidt nyt om al magien. Den her gang er vi (vist nok for første gang) tæt på en type, der er virkelig god til at få andre til at skifte mening om tingene. Desuden er han lidt af en skurk, så det er nogle dårlige ting, Toby bliver overtalt til. Og hvordan opdager man det? Og bekæmper det? Lad mig se … Der er vist også noget med en ny type reb. Og noget med at forvandle andre metaller til det for faerie så farlige jern.

“How are you so calm?”
“Oh, doubt not that I am in a state of full and genuine panic,” he said, with a hint of humor. “But one thing I’ve learned from my time beside you is this: when we are together, the impossible comes to pass with remarkable frequency and fervor. So let me panic. Let the fates rage. Let the stars tremble in the heavens, should they feel the need, and I will stand by your side, and I will see what cannot be brought to pass with skill, grace, and an utter lack of hesitation. The pain will be yours, my love. The fear will be shared between us, but I know enough of a woman about to face the birthing bed to know that the lion’s share will be yours to harbor. I can retain my calm in the face of tempests ahead so that one of us will stand sentry at the gate.”

Er det godt? Ja! Da jeg opdagede, at bind 19 var i Hugo-pakken, så røg den omgående øverst i stakken. Jeg er altid nysgerrig efter, hvad der nu sker med Toby. ###

Emily Wilde

Anmeldelse af Emily Wilde, af #HeatherFawcett. Serie. 2025. Hugo-finalist.

Nebula nominees . Hugo finalists .

En ny serie for mig. Jeg tager hul på bind 1, Emily Wilde’s Encyclopedia of Faeries.

Skitse: Wilde forsker i faerie. Det er godt nok et svært felt, fordi de er ikke specielt samarbejdsvillige, meget hemmelighedsfulde, ret mærkelige. Men man kan komme langt med at interviewe mennesker også. Hun har brugt 10 år af sin karriere på bl.a. at skrive en encyklopædi, der beskriver alle typer af faerie i verden. Hun mangler bare lidt information for at skrive kapitlet om Ljosland, det nordligste skandinaviske land. Så nu skal hun tilbringe vinteren med at lære lidt og skrive lidt.

Er det science fiction? Øhm, nej. Fantasy.

Temaer: Formen er en dagbog. Ved siden af de videnskabelige noter, så noterer hun mere løst, hvad der ellers sker. (Dog ikke mere uformelt, end at der er fodnoter.) Det er lidt af en rejse, at hun ved så meget om faerie, men slet ikke er forberedt på, at de lokale også har deres egen måde at gøre tingene på, som hun ikke er vant til.

Stort set omgående får hun selskab af en kollega, der godt nok nærmest er hendes eneste ven, men også er meget irriterende. Og vist nok en meget dårlig videnskabsmand. Nu kommer han bare brasende ind i det hus, hun har lejet, sammen med 2 studerende. Og så har Wilde en mistanke om, at han egentlig også er faerie.

Vi er vist i noget alternate history, måske for 100 år siden. Det tager en lille uge at sejle til Ljosland. Kongen af Paris bliver nævnt i forbifarten. Og selvfølgelig er Ljosland ikke noget, vi har, her i virkeligheden.

Er det godt? Ja! Jeg har lyst til at læse videre. ###

Håndværkskrigene

Anmeldelse af The Craft Wars, af #MaxGladstone. Serie. 2025. Hugo-finalist.

Nebula nominees . Hugo finalists .

Det her er en ny serie for mig. Jeg springer ud i bind 1, Dead Country.

Skitse: Tara, fars begravelse, støv, en lufthavn (“jeg tager den næste drage”), magi.

Er det science fiction? Nej. Fantasy. Og nok også horror.

Temaer: Udover det allerede nævnte, så er der også noget med en mand, der er forbandet og derfor bl.a. har samme farve som maddiker.

“Tara was supposed to feel confused and shaken and scared. She was not supposed to feel furious, so she went with that. She rounded the collapsed barn, mad and ready.
There was a Raider in the yard—a man, or what was left of a man. Half his body rippled with the slick black oily shadow of his curse, the darkness writhing with maggoty white thread. He had three arms, the extra grafted on his left side below the ribs, and here and there bone showed through gaps in his skin; one of his arms was half-cursed, the remaining flesh plump with rot, the skin split in places.”

Er det godt? Hele stemningen var ikke lige mig, og da jeg kom til maddikerne (ret hurtigt), så stod jeg af. #–

Osreth-krønikerne

Anmeldelse af The Chronicles of Osreth, af #KatherineAddison. Serie. 2025. Hugo-finalist.

Nebula nominees . Hugo finalists .

Det her drejer sig om The Witness for the Dead, der er bind 2 i en serie, hvor jeg for længe siden læste bind 1. Så jeg ved allerede, at der skulle hovedpersonen, den nye kejser, have undersøgt sin fars dødsfald og attentatforsøg mod sig selv. I den forbindelse bliver Celehar en vigtig efterforsker. Her i bind 2 har han fået et job i en ny by.

Skitse: Det er ikke nemt at være Celehar. De lokale er ikke tilfredse med, at det ikke er helt klart, hvad kommandovejen er. Skal de adlyde Celehar blindt eller ignorere ham? Og kan det bruges til noget, at han før har været involveret i “upassende opførsel”? Hans arbejde er bl.a. at behandle en sag med en forsvunden søster. Og en sag med et lig, der ikke lige kan identificeres. I den slags sager er det en faktor, at nyligt døde kan afhøres af Celehar. Witness for the Dead, get it? Så er der også en sag, hvor der foreligger 2 testamenter, så det kunne være praktisk at spørge afdøde, hvad for et der er det rigtige. Så er der forresten også en ghoul i en by i nærheden. Og et lille job som postbud. Og et luftskib, der eksploderer. Som man siger, det er indviklet.

Er det science fiction? Nix. Fantasy.

Temaer: Vi er et sted, hvor elvere og gobliner lever side om side og nogle gange får børn. Det giver problemer, bl.a. med fordomme og kultur-sammenstød.

Sproget her er lidt pudsigt. I praksis så er folk som regel Des, men gode venner er dus. Derfor er de i vores verden forældede entalsformer i brug. Og så er det en stor faktor, at pænt mange navne og titler er på ca. 5 stavelser. Se nedenfor.

De mange sager hænger sammen og griber ind i hinanden. Det komplette billede bliver, at nogle jobs har mange sideløbende tråde, der alle sammen skal passes.

“Subpraeceptor Azhanharad of the Amalo chapter of the Vigilant Brotherhood was a tall, broad man, half goblin…”

Er det godt? Jeg startede med at genlæse bind 1, som jeg huskede med glæde. Glæden varer ved i bind 2, omend måske i mindre grad. Ikke desto mindre: ###

#ThisWeeksFiddler, 20260717

This week the #puzzle is: Can You Win the World Cup? #montecarlo #coding #probabilities

Congratulations to Fiddler Nation for making it to the semifinals of the World Cup! All four teams that made it this far are equally matched in that they each possess the same total amount of “energy.” In advance of each semifinal game, teams must independently decide how much of their energy to allocate to the match; all remaining energy goes toward the finals. The team that spends more energy in any given game will win. The semifinals and finals occur so close in time that teams can’t recuperate any of their energy in between.
You’ve heard that the managers for the other three teams are abysmal and have no idea how to allocate their teams’ energy. Each of the other managers will independently pick a random percentage between 0 and 100 and allocate that portion of their team’s energy to the semifinal game; the rest of that team’s energy will go toward the final.
Since you’re the cleverest manager of the bunch, you can choose an optimal strategy that will maximize Fiddler Nation’s probability of winning the World Cup. What is this optimal probability?

And for extra credit:

As it turns out, I spoke too soon. Fiddler Nation has made it to the quarterfinals of the World Cup rather than the semifinals. My mistake. As before, teams must allocate the same total amount of energy across up to three matches.
The managers for the other seven teams remain abysmal. Each manager will independently pick a random percentage between 0 and 100 and allocate that amount of their team’s energy to the quarterfinal. If they win, they will allocate a random amount of their remaining energy to the semifinal. And if they win that, the rest of their team’s energy will go toward the final.
Fiddler Nation’s strategy must be drawn up in advance, with no specific knowledge of the other teams’ strategies beyond what I have already shared.
That said, as the cleverest manager of the bunch you can once again choose an optimal strategy that will maximize Fiddler Nation’s probability of winning the World Cup. What is this optimal probability?

Can You Win the World Cup?

Solution, possibly incorrect:

Program

Method: Monte Carlo.

  • I write a program to simulate the tournament a lot of times.
  • A complete strategy is to choose a number for the 1st game. E.g., if I choose 10% for the 1st game, there’s 90% left for the 2nd, no further choices.
  • I actually make a mistake the 1st time with my program, because I just assume my opponent in the final used a random amount of energy in the semifinal. An extra element here is, that my opponent also won the 1st game. The result of this is, that they probably used “a lot of energy” in the semifinal, and therefore doesn’t have “a lot” left. I write an extra function to simulate that other part of the tournament.

Curve of the result:

If I use 1% energy in the 1st game, about 1000 out of 100000 simulated tournaments are won. The best result is 58% energy, with 38.696% win ratio. But there’s a little group of results close to that, so that’s just an estimate.

Result: 39%. (See below, 38.5 or 38.6.)

And for extra credit:

Tweak program and go again. Let me just read that 1 more time… Yes. The whole strategy has to be chosen before the 1st game. Heat maps:

If I use 53% in the 1st game and 21% in the 2nd, I win 28328 of 100000 simulated tournaments. But there’s a whole cloud of results in the vicinity.

Result: 28%. (See below, 28.2 or 28.3.)

Trying to become better at making heat maps – now with better numbers on the axis, and the last 2 were made with more accuracy (more loops):

Also, the results with more loops – 38.5 and 38.6 seem probable, as does 28.2 and 28.3:

Result 1, max wins: 0.38572

E1: 0.5540 E2: 0.4460 Wins: 0.3845400
E1: 0.5560 E2: 0.4440 Wins: 0.3845750
E1: 0.5570 E2: 0.4430 Wins: 0.3846450
E1: 0.5600 E2: 0.4400 Wins: 0.3852190 -
E1: 0.5610 E2: 0.4390 Wins: 0.3843620
E1: 0.5630 E2: 0.4370 Wins: 0.3847120
E1: 0.5640 E2: 0.4360 Wins: 0.3844680
E1: 0.5650 E2: 0.4350 Wins: 0.3849760
E1: 0.5660 E2: 0.4340 Wins: 0.3841780
E1: 0.5670 E2: 0.4330 Wins: 0.3851480 -
E1: 0.5680 E2: 0.4320 Wins: 0.3849550
E1: 0.5690 E2: 0.4310 Wins: 0.3844520
E1: 0.5700 E2: 0.4300 Wins: 0.3843820
E1: 0.5710 E2: 0.4290 Wins: 0.3846120
E1: 0.5720 E2: 0.4280 Wins: 0.3843730
E1: 0.5730 E2: 0.4270 Wins: 0.3843730
E1: 0.5740 E2: 0.4260 Wins: 0.3855780 -
E1: 0.5750 E2: 0.4250 Wins: 0.3849750
E1: 0.5760 E2: 0.4240 Wins: 0.3842780
E1: 0.5780 E2: 0.4220 Wins: 0.3847780
E1: 0.5790 E2: 0.4210 Wins: 0.3854960 -
E1: 0.5800 E2: 0.4200 Wins: 0.3851070 -
E1: 0.5810 E2: 0.4190 Wins: 0.3849570
E1: 0.5830 E2: 0.4170 Wins: 0.3847470
E1: 0.5840 E2: 0.4160 Wins: 0.3850320 -
E1: 0.5850 E2: 0.4150 Wins: 0.3844100
E1: 0.5860 E2: 0.4140 Wins: 0.3841980
E1: 0.5870 E2: 0.4130 Wins: 0.3845960
E1: 0.5890 E2: 0.4110 Wins: 0.3847450
E1: 0.5900 E2: 0.4100 Wins: 0.3846460
E1: 0.5910 E2: 0.4090 Wins: 0.3842120
E1: 0.5920 E2: 0.4080 Wins: 0.3846600
E1: 0.5930 E2: 0.4070 Wins: 0.3857210 *
E1: 0.5940 E2: 0.4060 Wins: 0.3849330
E1: 0.5960 E2: 0.4040 Wins: 0.3843630
E1: 0.5980 E2: 0.4020 Wins: 0.3841920
E1: 0.5990 E2: 0.4010 Wins: 0.3840440
E1: 0.6000 E2: 0.4000 Wins: 0.3840040
E1: 0.6030 E2: 0.3970 Wins: 0.3842700

Result 2, max wins: 0.28273

E1: 0.4990 E2: 0.2300 Wins: 0.2822620
E1: 0.5030 E2: 0.2320 Wins: 0.2821100
E1: 0.5040 E2: 0.2300 Wins: 0.2821480
E1: 0.5040 E2: 0.2350 Wins: 0.2822040
E1: 0.5060 E2: 0.2450 Wins: 0.2825120 -
E1: 0.5070 E2: 0.2370 Wins: 0.2821200
E1: 0.5080 E2: 0.2220 Wins: 0.2823350
E1: 0.5080 E2: 0.2410 Wins: 0.2821320
E1: 0.5100 E2: 0.2400 Wins: 0.2822310
E1: 0.5100 E2: 0.2430 Wins: 0.2821000
E1: 0.5110 E2: 0.2230 Wins: 0.2821650
E1: 0.5110 E2: 0.2350 Wins: 0.2821200
E1: 0.5120 E2: 0.2280 Wins: 0.2824650 -
E1: 0.5120 E2: 0.2390 Wins: 0.2822870
E1: 0.5130 E2: 0.2280 Wins: 0.2821010
E1: 0.5150 E2: 0.2310 Wins: 0.2822700
E1: 0.5160 E2: 0.2320 Wins: 0.2821560
E1: 0.5160 E2: 0.2340 Wins: 0.2827280 *
E1: 0.5160 E2: 0.2390 Wins: 0.2822090
E1: 0.5170 E2: 0.2330 Wins: 0.2821160
E1: 0.5170 E2: 0.2340 Wins: 0.2822440
E1: 0.5180 E2: 0.2250 Wins: 0.2821520
E1: 0.5180 E2: 0.2340 Wins: 0.2824180 -
E1: 0.5200 E2: 0.2220 Wins: 0.2824470 -
E1: 0.5200 E2: 0.2240 Wins: 0.2822010
E1: 0.5200 E2: 0.2340 Wins: 0.2821920
E1: 0.5200 E2: 0.2350 Wins: 0.2822610
E1: 0.5210 E2: 0.2340 Wins: 0.2821350
E1: 0.5230 E2: 0.2280 Wins: 0.2822700
E1: 0.5230 E2: 0.2290 Wins: 0.2824650 -
E1: 0.5240 E2: 0.2220 Wins: 0.2821440
E1: 0.5250 E2: 0.2250 Wins: 0.2821790
E1: 0.5250 E2: 0.2320 Wins: 0.2824380 -
E1: 0.5260 E2: 0.2210 Wins: 0.2822790
E1: 0.5260 E2: 0.2250 Wins: 0.2821760
E1: 0.5270 E2: 0.2210 Wins: 0.2823230
E1: 0.5270 E2: 0.2260 Wins: 0.2823710
E1: 0.5280 E2: 0.2200 Wins: 0.2821080
E1: 0.5280 E2: 0.2260 Wins: 0.2824000 -
E1: 0.5280 E2: 0.2290 Wins: 0.2826180 -
E1: 0.5280 E2: 0.2320 Wins: 0.2822990
E1: 0.5290 E2: 0.2210 Wins: 0.2821120
E1: 0.5300 E2: 0.2180 Wins: 0.2821250
E1: 0.5310 E2: 0.2170 Wins: 0.2824390 -
E1: 0.5310 E2: 0.2290 Wins: 0.2822880
E1: 0.5330 E2: 0.2180 Wins: 0.2821450
E1: 0.5330 E2: 0.2230 Wins: 0.2822540
E1: 0.5360 E2: 0.2240 Wins: 0.2824160 -

GridOS 1, conclusions

To round off my look at solutions for GridOS 1, here a few more general thoughts.

Characteristics of a good rules program:

  • Delay some of the processing of the input until later. Like, if I see a D now, add a C at the end of string for later processing and do the difference between C and D now (write 2 P’s). (Details.) A lot of the time, the rule invoked for the delayed processing would already have been in use, so we don’t add an extra rule.
  • Split the program into subprograms, that run in different situations. Like, if the 1st character is a B, only certain rules will be used. (Details.) For each case, there are a limited number of rules in use. And it might handle the situation, where separate rules to spread the heads and process the 1st input uses up a lot of rules.
  • Consider “write a lot now, be prepared to delete some later”. (Details.) Writing a lot at the beginning might save a step/rule later. It might also be, that the logic to write/delete is easier than wait/do nothing.
  • It’s probably better to have a “complicated move right, easy move left and down” way to handle multiple lines of input. (Details.) It might be possible to have 1 rule to handle the “move left” part.
  • Consider efficiency, not beauty. Write that output wherever. At the end of the line, or for no particular reason above and below the input.
  • Find a shortcut. Can the puzzle be turned on its head? Can the output be written in a non-obvious place? (Details.)
  • Use a structure of the input. Like, the input might actually be symmetrical/mirrored/rotated in some way. (Details.)

Characteristics of a good steps program:

  • Generate the code.
  • Use recursion.
  • Work in more than 1 area at the same time, like doing both ends of string.
  • Use as many heads as possible.
  • Find an elegant solution combining these 2. (Details.)
  • Tailor the program to the input? (Details.)
  • Combine spreading the heads with the processing. (Details.)
  • Delay some of the processing, but only a little. (Details.)
  • Split the program into subprograms. (Details.)
  • Write the output wherever. (Details.)
  • Use a structure of the input. (Details.)

Not surprisingly there’s an overlap between the 2 lists. Not surprisingly, I was not the only one to discover the top 4 of good step strategies.

I feel ready for the next competition!

#ThisWeeksFiddler, 20260710

This week the #puzzle is: Can You Power up the Hill? #trigonometry #root

… we’ll be looking at a model for a cyclist’s speed v as a function of their pedaling power P, their mass m, and the ground’s angle of inclination 𝜃:
v=Pmsinθ+10v=\frac{P}{m\sin{\theta}+10}
(For the purposes of this puzzle, you needn’t worry about the units for power, mass, or speed. If you’re curious, they’re typically given in Watts, kilograms, and kilometers per hour or miles per hour, respectively.)
In cycling, roads are marked with a gradient g, which is a hill’s slope, typically expressed as a percentage. Thus, an incredibly steep 45-degree incline has a gradient of 1, or “100 percent.”
Consider the following two riders:
– A “climber,” who has a power of 300 and a mass of 60
– A “sprinter,” who has a power of 325 and a mass of 80
At what gradient will the climber and sprinter cycle at the same speed? (You can give your answer as a value between 0 and 1 or as a percentage.)

And for extra credit:

The climber and the sprinter are racing up a perfectly sinusoidal hill. They go from the base, where the gradient is 0 percent, to the peak, where the gradient is again 0 percent. For them to reach the top at the same time, what should the maximum gradient of the hill be? (You can give your answer as a value between 0 and 1 or as a percentage.)
Importantly, note that the formula for v given above is for a rider’s speed along the ground. Thus, when the ground is inclined, the same speed will cover less horizontal distance per unit time.

Can You Power up the Hill?

Solution, possibly incorrect:

Desmos

I create 2 graphs, 1 for each rider. The x axis is the angle of the slope, y is the speed. Then I note where the graphs cross.

Result: A slope of 0.055584. This gives both riders a speed of 22.5.

g(θ)=sin(θ)cos(θ)g\left(\theta\right)=\frac{\sin\left(\theta\right)}{\cos\left(\theta\right)}

The slope corresponds to a gradient of 0.0556413145901. Let’s say 0.05564 = 5.564%.

And for extra credit:

Something with trigonometry? Maybe an integral? I think I need a reverse function, going from gradient to slope, and I don’t quite see how to do that. Sigh.

GridOS 1 quest 5, Peter

Peter won the part 3, steps competition.

Tricks:

  • Not generated code — the golf is 56! I think this program uses the feature, that the top/bottom lines are the same, and the left/right lines are the same.
  • 2 3 head combinations going down, 2 2 head combinations going right.

Wonderful!

This will be my last review of a specific puzzle, but I plan on drawing some conclusions from the whole competition tomorrow.

Code . I have become aware, that the code is only available, if you’re logged in.

GridOS 1 quest 5, William McCaw

McCaw won the part 2, steps competition. Behold:

Let me see…

  • Generated code — a golf of 6565.
  • Coming from both ends and twice from the middle at the same time.

Yeah, I guess that’s it! But, just for fun, let’s look at the case 2 program, ignoring all the rules not used.

HEADS AAABBBBCCC
START .......... S000 ***+*+**** SDDLLDDSLL
S000 .......... S001 ***+*+**** SSDLLDDSSL
S001 .......... S002 +******+++ RRRSDSLUUU
S002 .@*.....@* S044 +**+++++** RRRDDLLUUU
S044 ...+.+.... S04D +++*+*++++ RRRLLDDUUU
S04D *@.@.@.*@. S04D **+*+*+**+ RRRLLDDUUU
S04D **+*+*+**+ STOP ********** SSSSSSSSSS

2 steps to spread the heads, and writing the 1st +’s in the corner as well. And then we go! There are a lot of rules for S04D. The 3 head combinations from the ends can always move closer to the corner. The 2 head combinations beginning in the corner have to dance a little (!), when they maneuver through a hole between the barrels.

Code .

GridOS 1 quest 4, Peter

Peter won the part 3, steps competition.

Again, something very familiar about these 9- row cases. The 1st action is to count the rows, initially by replacing the # at the beginning with a number. And then … all heads travel right? In the 3 row case, they even separate a little before going right?

But then, those 10+ row cases.

As the rows have been counted, the 10 row case is like the previous cases. But for 13 rows, there’s, let me see, 3 heads in the top, 4 in the bottom, and in the middle 3 heads traveling up and down. Slightly different way to solve that particular problem. Looks more elegant. And apparently it saves steps. Or at least, the complete strategy for 3-13 rows saves steps.

Code .