Skip to content

Instantly share code, notes, and snippets.

View ParadoxV5's full-sized avatar
🈺

ParadoxV5

🈺
View GitHub Profile
@ParadoxV5
ParadoxV5 / vampire.rb
Created October 27, 2024 18:54
Ruby Discord Halloween 2024 Challenge
VAMPIRES = ARGV.each_with_index.filter_map do|input, idx|
number = Integer input
length = input.length
next if length.odd?
fangs = input.chars.permutation(length).filter_map do|digits|
digits2 = digits.pop(length/2)
next if digits.last == '0' and digits2.last == '0' # This isn’t counted
a = Integer digits .join, 10
b = Integer digits2.join, 10
@ParadoxV5
ParadoxV5 / 魔塔语.rb
Created October 18, 2024 21:16
魔塔语(大五码当GB读的乱码)
# ### 问:大五码系列和GB系列的字节长度“兼容”吗?
# 大五码系列用一或两个字节编码一个字符,而最新的 GB 18030 用一、二或四个。
# * 大五和GB的单字节范围都是 `00`–`7F`;大于这个范围的字节才表示多节的编码。
# * GB 18030 特有的驷节编码通过 `30`–`39` 范围的第二节辨识;这个范围小于大五*和GB*的双节编码的第二节范围。
# 排除上面后,大五码系列除了错误之外的双字节均对应GB系列的双字节————虽然有些大五范围超出了GB范围。
puts ARGV.map { _1
.encode(Encoding::Big5_HKSCS) # 大五码・香港增补字符集
.force_encoding(Encoding::GB18030) # 信息技术 中文编码字符集(码位最多)
}.join(' ').encode(Encoding.default_external)
@ParadoxV5
ParadoxV5 / Eudora.md
Last active October 3, 2024 18:58
Eudora Fast Dig 尤多拉速挖
@ParadoxV5
ParadoxV5 / 红龙贼学习笔记.md
Last active September 20, 2024 05:51
红龙贼学习笔记(未完待续)

(Should I compose an English edition as well?)

此番学习参考了[燁魔的教学][燁魔]。🙏

她早已像我这么强。🪦 (也是,我还给她介绍了向导学徒,说明她早已出师(不是四声)。)

无限火球、点燃、火妖、“水妖”(银樽)等哀绿法虽然自闭,但是不管过度再怎么顺滑,它们也依然有不低的门槛和技术天花板。 操作者要在面临烧绳的鸭梨下考虑牌序(比如“奥术脑洞”刷夜能在复制了太多法强后穿进疲劳紫砂),技术含量比♾️🚪、♾️🧊多多了。

@ParadoxV5
ParadoxV5 / Push–Relabel Maximum Flow.rb
Last active July 6, 2024 02:37
Ruby Discord Jurassic Challenge
# frozen_string_literal: true
# Goldberg–Tarjan Push–Relabel Algorithm
# with FIFO active set and BFS pre-labeling
# * https://www.adrian-haarbach.de/idp-graph-algorithms/implementation/maxflow-push-relabel/index_en.html
# * https://en.wikipedia.org/wiki/Push%E2%80%93relabel_maximum_flow_algorithm?oldid=1230043247
# variable names are in dummies’ terminologies
class PushRelabel
class Node
@ParadoxV5
ParadoxV5 / int2bytestr.rb
Created May 25, 2024 04:07
Pack an integer to a byte-sequence string. Discussed in https://discord.com/invite/ruby-518658712081268738 #general. I dedicate this to the Public Domain.
def int2bytestr(int, bytesize = int.size)
[
# Format to hex, left-pad with `0` (big-endian) for `bytesize * 2` nibbles
sprintf('%0*X', bytesize * 2, int)
].pack 'H*' # Pack string of hex chars to string of raw bytes
end
# Demo
print "actual\t"
p int2bytestr(0x4_20_69_de_ad_be_ef_13_37, 10)
# Marker module for “my library”
module MyError end
# Built-in exception class example
ZeroDivisionError.include MyError
puts begin
1 / 0
rescue MyError => e
e
end #=> divided by 0
@ParadoxV5
ParadoxV5 / Wireworld.rb
Last active February 4, 2024 03:41
Ruby Discord Valentine’s Challenge
# frozen_string_literal: true
class CellularAutomaton
def initialize(grid)
@grid = grid
# Back Buffer
@grid2 = grid.map(&:dup)
@rules = yield self
end
def self.load(file, ...) = new(file.each_line(chomp: true).map(&:chars), ...)
def answer1(n) = n.succ
def answer2(str) = str.upcase
def answer3(n) = (0..n).to_a
def answer4 = yield + 42
def answer5(a, b = 1) = a + b
def answer6(n) = n.positive? ? (n - 1) % 9 + 1 : n
def answer7(x) = x.succ
def answer8(n) = n.digits(2).sum
def answer9(s) = s.gsub 'u-g0t-me', 'yikes'
def answer10(x = false) = @data10 = x ? 0 : @data10 ? @data10 + 1 : 1
@ParadoxV5
ParadoxV5 / Symbolic Fibonacci
Created November 28, 2023 05:28
Fibonacci calculator implemented with only `\W`s (and without realizing `Range%` is a block-taking thing)
$* << [//=~'', /$/=~'$'] << () << ->() {
$*[~(/$$/=~'$$')][
( $*[~(/$/=~'$')] += (/$/=~'$') ) - (/$/=~'$')
] ||= (
$*[~(/$/=~'$')] -= (/$$/=~'$$')
$*[~(//=~'')][] + $*[ ~(/$$/=~'$$') ][ $*[~(/$/=~'$')] - (/$$/=~'$$') ]
)
}
# Test