mscroggs.co.uk
mscroggs.co.uk

subscribe

Comment

Comments

Comments in green were written by me. Comments in blue were not written by me.
@Oleg:

I removed my macros:
#define __tzcnt_u32(v) ((v) ? (_tzcnt_u32(v)) : (32))
#define __lzcnt32(v) ((v) ? (_lzcnt_u32(v)) : (32))
replacing them with simple inline code


Util.h

//#include // not including all
#include // just include what's needed
#include // just include what's needed
#include // just include what's needed

#if 1 // use safe localtime
struct tm buf; // use safe localtime
auto err = localtime_s(&buf, &cur_time); // use safe localtime
return std::put_time(&buf, "%F %T"); // use safe localtime
#else // use safe localtime
return std::put_time(std::localtime(&cur_time), "%F %T");
#endif // use safe localtime


State.h

changed _mm_set_epi8(0x80 to -0x80 to stop warnings

inline replacement:
//int i = __tzcnt_u32(mask); // for no BMI; without zero test, as not needed here
int i = _tzcnt_u32(mask); // for no BMI; without zero test, as not needed here

inline replacement:
//int last_idx_before_mid = 31 - __lzcnt32(off_mask); // for no BMI; without zero test, as not needed here
int last_idx_before_mid = _lzcnt_u32(off_mask); // for no BMI; without zero test, as not needed here


Solver.h

inline replacement:
//return ini.size(); // to stop warning
return (int)ini.size(); // to stop warning

inline replacement:
//const int dim = __tzcnt_u32(mask); // for no BMI; without zero test, as not needed here
const int dim = _tzcnt_u32(mask); // for no BMI; without zero test, as not needed here


I tried '9' runs: with asserts: 10:31, without: 10:18 (saved 2%)
A minute slower than the faulty version, but still not too bad for a 2013 (Q3) CPU :)
Lord Sméagol
on /blog/119
               

Archive

Show me a random blog post
 2026 

May 2026

World Cup stickers 2026

Apr 2026

A new puzzle every day
Mixing Wordle with other games

Feb 2026

Christmas (2025) is over
 2025 

Dec 2025

Christmas card 2025

Nov 2025

Christmas (2025) is coming!

Sep 2025

The partridge puzzle

Aug 2025

TMiP 2025 puzzle hunt

Jun 2025

A nonogram alphabet

Mar 2025

How to write a crossnumber

Jan 2025

Christmas (2024) is over
Friendly squares
 2024 

Dec 2024

A regular expression Christmas puzzle
Christmas card 2024

Nov 2024

Christmas (2024) is coming!

Feb 2024

Zines, pt. 2

Jan 2024

Christmas (2023) is over
 2023 
▼ show ▼
 2022 
▼ show ▼
 2021 
▼ show ▼
 2020 
▼ show ▼
 2019 
▼ show ▼
 2018 
▼ show ▼
 2017 
▼ show ▼
 2016 
▼ show ▼
 2015 
▼ show ▼
 2014 
▼ show ▼
 2013 
▼ show ▼
 2012 
▼ show ▼

Tags

bodmas video games warwick fence posts gather town standard deviation crossnumbers nonograms people maths python folding tube maps data weak imposition hexapawn nine men's morris accuracy triangles chess royal institution wool asteroids signorini conditions matrix multiplication plastic ratio dataset wave scattering quadrilaterals programming crossnumber bluesky bots rhombicuboctahedron live stream stickers correlation squares logo a gamut of games national lottery bempp weather station estimation preconditioning polynomials javascript exponential growth php computational complexity coins mathsteroids guest posts captain scarlet simultaneous equations mathsjam numerical analysis harriss spiral electromagnetic field menace crochet fonts flexagons machine learning manchester science festival statistics christmas world cup tmip recursion datasaurus dozen pythagoras turtles ucl tennis kenilworth finite element method error bars raspberry pi errors logic tetris inverse matrices london partridge puzzle radio 4 curvature matrices zines latex thirteen reuleaux polygons frobel cambridge dates rugby martin gardner pokémon sorting approximation chebyshev golden spiral light advent calendar craft edinburgh anscombe's quartet go sound graphs hyperbolic surfaces dragon curves convergence probability cross stitch christmas card newcastle arithmetic trigonometry propositional calculus final fantasy determinants coventry puzzles misleading statistics sobolev spaces mathslogicbot geometry the aperiodical stirling numbers interpolation palindromes pascal's triangle friendly squares rust matrix of cofactors inline code big internet math-off youtube chalkdust magazine map projections kings logs gaussian elimination european cup bubble bobble matt parker wordle hats gerry anderson graph theory geogebra dinosaurs talking maths in public hannah fry golden ratio books football matrix of minors boundary element methods mean numbers arrangement puzzles braiding runge's phenomenon draughts platonic solids 24 hour maths crosswords pi approximation day regular expressions phd databet game show probability speed games noughts and crosses news finite group pac-man countdown binary royal baby oeis alphabets fractals data visualisation realhats folding paper sport pi manchester london underground reddit game of life ternary pokémon wordle pizza cutting

Archive

Show me a random blog post
▼ show ▼
© Matthew Scroggs 2012–2026