easters

easters.dev solutions (C)
git clone git://bsandro.tech/easters
Log | Files | Refs | LICENSE

commit 3718a0d09ad652f77ec83de71f80abd48c94dd20
Author: bsandro <email@bsandro.tech>
Date:   Sun, 11 Jan 2026 03:55:31 +0200

init repo

Diffstat:
A.gitignore | 2++
ALICENSE | 24++++++++++++++++++++++++
AMakefile | 74++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acputime.h | 12++++++++++++
Ainputs/.keep | 0
5 files changed, 112 insertions(+), 0 deletions(-)

diff --git a/.gitignore b/.gitignore @@ -0,0 +1,2 @@ +inputs/*.txt +*.bin diff --git a/LICENSE b/LICENSE @@ -0,0 +1,24 @@ +BSD 2-Clause License + +Copyright (c) 2025, bsandro. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/Makefile b/Makefile @@ -0,0 +1,74 @@ +.SUFFIXES: +MAKEFLAGS+=-rR + +UNAME:=$(shell uname -m) +OS:=$(shell uname -s) + +CFLAGS=-std=c99 -Wall -Wextra -I. +ifeq ($(DEBUG),1) +CFLAGS+=-O0 -g +else +CFLAGS+=-O3 -ffast-math +LTO=-flto +endif + +ifeq ($(OS),NetBSD) +CFLAGS+=-I/usr/pkg/include +endif + +ifeq ($(OS),Darwin) +CFLAGS+=-I/opt/homebrew/include +endif + +ifeq ($(UNAME),riscv64) +CFLAGS+=-mtune=sifive-u74 +else ifeq ($(UNAME),Power Macintosh) +CFLAGS+=-mtune=native $(LTO) +else ifeq ($(UNAME),i386) +CFLAGS+=-mtune=native +else +CFLAGS+=-march=native $(LTO) +endif + +LDFLAGS=-lc -lm + +ifeq ($(OS),NetBSD) +LDFLAGS+=-L/usr/pkg/lib -Wl,-rpath,/usr/pkg/lib +endif + +ifeq ($(OS),Darwin) +LDFLAGS+=-L/opt/local/lib +endif + +ifeq ($(GLPK),1) +LDFLAGS+=-lglpk +endif + +ifneq ($(shell which clang),) +CC=clang +else ifneq ($(shell which gcc-mp-14),) +CC=gcc-mp-14 +else +CC=cc +endif + +.PHONY: clean + +%+run: %.bin + ./$< < inputs/$*.txt + +%+test: %.bin + ./$< < inputs/$*_test.txt + +%+test1: %.bin + ./$< < inputs/$*_test1.txt + +.SECONDARY: +%: %.bin + @: + +%.bin: %.c + ${CC} $< $(CFLAGS) $(LDFLAGS) -o $@ + +clean: + rm -f ./*.bin diff --git a/cputime.h b/cputime.h @@ -0,0 +1,12 @@ +#pragma once +#include <time.h> +static volatile double time_started = 0; + +void __attribute((constructor)) begin(void) { + time_started = clock(); +} + +void __attribute((destructor)) end(void) { + double elapsed = clock() - time_started; + printf("Elapsed: %f s\n", elapsed/CLOCKS_PER_SEC); +} diff --git a/inputs/.keep b/inputs/.keep