Groups | Search | Server Info | Login | Register


Groups > comp.lang.awk > #9895

Re: 100 Random Single Variable Linear Equations

Path csiph.com!weretis.net!feeder9.news.weretis.net!news.quux.org!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From porkchop@invalid.foo (Mike Sanders)
Newsgroups comp.lang.awk
Subject Re: 100 Random Single Variable Linear Equations
Date Sun, 8 Dec 2024 11:02:55 -0000 (UTC)
Organization A noiseless patient Spider
Lines 82
Sender Mike Sanders <busybox@sdf.org>
Message-ID <vj3ucv$3oa44$1@dont-email.me> (permalink)
References <vits2o$240vr$1@dont-email.me>
Injection-Date Sun, 08 Dec 2024 12:02:56 +0100 (CET)
Injection-Info dont-email.me; posting-host="0513f042c00441571518d761624f4bea"; logging-data="3942532"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+lH6yO7xM/UvVi3LAHWiOW"
User-Agent tin/2.6.2-20221225 ("Pittyvaich") (NetBSD/9.3 (amd64))
Cancel-Lock sha1:T6dPdKw3QD6fI9NZApk/zWRBv9c=
Xref csiph.com comp.lang.awk:9895

Show key headers only | View raw


final iteration: family/work/time-constraints/etc

earnest thanks to all (bonus points: Janis Papanagnou)

# algebra.awk - Michael Sanders 2024
#
# invocation: awk -f algebra.awk -v SEED=$RANDOM > solve.txt
#
# generates unique algebraic equations in 3 forms...
#
# ax + b = c
# ax + bx = c
# ax + b + x = c
#
# where...
#
# x is the variable (solve for x)
# a, b, & c are constants (numbers)
#
# operators: + addition, - subtraction, * multiplication, / division
#
# notes...
#
# - not all equations will be pedantically/academically proper
# - SEED is optional & can be reused
# - post improvements in comp.lang.awk
#
# further reading: https://en.wikipedia.org/wiki/Algebra

BEGIN {

    # seed random number generator
    if (SEED+0 != SEED) SEED = 1; srand(SEED)

    g = 100       # number of unique equations to generate
    p = length(g) # uniform padding for serial number

    do {
        a = rnd(1, 20)                  # random value for x coefficient
        b = rnd(1, 99)                  # random value for b constant
        c = rnd(1, 500)                 # random value for c constant
        n = (rnd(1, 2) == 1) ? "-" : "" # random negative for x coefficient
        f = rnd(1, 3)                   # random equation form
        op1 = rop()                     # 1st random operator

        if (f == 1) {
            # simple equation: ax op1 b = c
            e = sprintf("%s%dx %s %d = %d", n, a, op1, b, c)
        } else if (f == 2) {
            # medium complexity: ax op1 b2x = c
            b2 = rnd(1, 20) # new/different coefficient for 2nd x
            e  = sprintf("%s%dx %s %dx = %d", n, a, op1, b2, c)
        } else if (f == 3) {
            # more complex: ax op1 b op2 x = c
            op2 = rop()                    # 2nd random operator
            while (op2 == op1) op2 = rop() # hacky...
            e = sprintf("%s%dx %s %d %s x = %d", n, a, op1, b, op2, c)
        }

        # store equation in array if it doesn't already exist and is valid
        if (!(e in equ)) {
            equ[e] = 1 # mark element as reserved
            u++        # increment u for each unique equation
        }

    } while (u < g)

    printf("SEED: %d\n\n", SEED) # print seed & equations in blocks of 10
    for (j in equ) printf("%0" p "d. %s%s", ++i, j, (i % 10 == 0) ? "\n\n" : "\n")

}

function rop() { return substr("+-*/", rnd(1, 4), 1) }

function rnd(min, max) { return int(rand() * (max - min + 1)) + min }

# eof

-- 
:wq
Mike Sanders

Back to comp.lang.awk | Previous | NextPrevious in thread | Find similar


Thread

100 Random Single Variable Linear Equations porkchop@invalid.foo (Mike Sanders) - 2024-12-06 03:46 +0000
  Re: 100 Random Single Variable Linear Equations porkchop@invalid.foo (Mike Sanders) - 2024-12-06 04:51 +0000
    Re: 100 Random Single Variable Linear Equations Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2024-12-06 13:43 +0100
      Re: 100 Random Single Variable Linear Equations Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2024-12-06 13:59 +0100
        Re: 100 Random Single Variable Linear Equations porkchop@invalid.foo (Mike Sanders) - 2024-12-07 02:39 +0000
        Re: 100 Random Single Variable Linear Equations porkchop@invalid.foo (Mike Sanders) - 2024-12-07 20:42 +0000
      Re: 100 Random Single Variable Linear Equations porkchop@invalid.foo (Mike Sanders) - 2024-12-06 13:38 +0000
        Re: 100 Random Single Variable Linear Equations Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2024-12-06 21:01 +0100
          Re: 100 Random Single Variable Linear Equations Christian Weisgerber <naddy@mips.inka.de> - 2024-12-06 23:05 +0000
            Re: 100 Random Single Variable Linear Equations porkchop@invalid.foo (Mike Sanders) - 2024-12-07 01:36 +0000
        Re: 100 Random Single Variable Linear Equations Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2024-12-06 12:53 -0800
          Re: 100 Random Single Variable Linear Equations porkchop@invalid.foo (Mike Sanders) - 2024-12-06 22:05 +0000
            Re: 100 Random Single Variable Linear Equations porkchop@invalid.foo (Mike Sanders) - 2024-12-07 02:06 +0000
        Re: 100 Random Single Variable Linear Equations porkchop@invalid.foo (Mike Sanders) - 2024-12-06 22:04 +0000
          Re: 100 Random Single Variable Linear Equations porkchop@invalid.foo (Mike Sanders) - 2024-12-07 01:49 +0000
            Re: 100 Random Single Variable Linear Equations Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2024-12-07 03:21 +0100
              Re: 100 Random Single Variable Linear Equations porkchop@invalid.foo (Mike Sanders) - 2024-12-08 06:40 +0000
                Re: 100 Random Single Variable Linear Equations Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2024-12-08 15:15 +0100
                Re: 100 Random Single Variable Linear Equations porkchop@invalid.foo (Mike Sanders) - 2024-12-09 16:43 +0000
                Re: 100 Random Single Variable Linear Equations Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2024-12-09 21:10 +0100
  Re: 100 Random Single Variable Linear Equations porkchop@invalid.foo (Mike Sanders) - 2024-12-08 06:06 +0000
    Re: 100 Random Single Variable Linear Equations porkchop@invalid.foo (Mike Sanders) - 2024-12-08 07:16 +0000
  Re: 100 Random Single Variable Linear Equations porkchop@invalid.foo (Mike Sanders) - 2024-12-08 11:02 +0000

csiph-web