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

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

Archive

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