mirror of
https://codeberg.org/scip/gfn.git
synced 2025-12-16 10:20:57 +01:00
- fixed issue#1: break endless loop for non-codes - added config file support - added logo - added unit tests - added ci test pipeline - added issue templates - added binary release builder - enhanced documentation - made the number of columns flexible based on word size
66 lines
1.4 KiB
Go
66 lines
1.4 KiB
Go
/*
|
|
Copyright © 2024 Thomas von Dein
|
|
|
|
This program is free software: you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation, either version 3 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
package main
|
|
|
|
import "log"
|
|
|
|
func Exists[K comparable, V any](m map[K]V, v K) bool {
|
|
if _, ok := m[v]; ok {
|
|
return true
|
|
}
|
|
return false
|
|
}
|
|
|
|
func Die(err error) int {
|
|
log.Fatal("Error: ", err.Error())
|
|
|
|
return 1
|
|
}
|
|
|
|
// find an item in a list, generic variant
|
|
func Contains[E comparable](s []E, v E) bool {
|
|
for _, vs := range s {
|
|
if v == vs {
|
|
return true
|
|
}
|
|
}
|
|
|
|
return false
|
|
}
|
|
|
|
// Transpose a matrix, x=>y, y=>x
|
|
// via https://gist.github.com/tanaikech/5cb41424ff8be0fdf19e78d375b6adb8
|
|
func Transpose(slice [][]string) [][]string {
|
|
xl := len(slice[0])
|
|
yl := len(slice)
|
|
|
|
result := make([][]string, xl)
|
|
|
|
for i := range result {
|
|
result[i] = make([]string, yl)
|
|
}
|
|
|
|
for i := 0; i < xl; i++ {
|
|
for j := 0; j < yl; j++ {
|
|
result[i][j] = slice[j][i]
|
|
}
|
|
}
|
|
|
|
return result
|
|
}
|