Basicprogramming(.org) > Code and examples

Floyd's Triangle

<< < (2/3) > >>

B+:
Yep! John's got a good one! :)

Works in JB too:

--- Code: ---' "Floyd John's version" ' from All BASIC 2018-10-17 looking pretty good!"
l = 14 'number of rows for Floyd to process
n = 1 ' number increment
FOR r = 1 TO l
    FOR c = 1 TO r
        PRINT RIGHT$("    " + STR$(n), LEN(STR$(c + l * (l - 1) / 2)) + 1);
        n = n + 1
    NEXT
    PRINT
NEXT

--- End code ---

Output:
--- Code: ---  1
  2  3
  4  5  6
  7  8  9 10
 11 12 13 14 15
 16 17 18 19 20 21
 22 23 24 25 26 27 28
 29 30 31 32 33 34 35 36
 37 38 39 40 41 42 43 44  45
 46 47 48 49 50 51 52 53  54  55
 56 57 58 59 60 61 62 63  64  65  66
 67 68 69 70 71 72 73 74  75  76  77  78
 79 80 81 82 83 84 85 86  87  88  89  90  91
 92 93 94 95 96 97 98 99 100 101 102 103 104 105


--- End code ---

Mike Lobanovsky:

--- Quote from: B+ on October 17, 2018, 02:52:37 PM ---Yep! John's got a good one! :)

--- End quote ---

Yes Mark,

And while we're at it let me note that John's code beats Tomaaz's kabbala hands down 3 times:
* readability wise
* code length wise
* speed wiseSlightly underdone, you say? ;)

;D

jj2007:
Version 1, a smooth triangle (but not exactly what the Rosetta specs ask for):

include \masm32\MasmBasic\MasmBasic.inc         ; download
  SetGlobals rows, columns, ct
  Init
  For_ rows=0 To 19
        For_ columns=0 To rows
                inc ct
                Print Str$("%__i ", ct)
        Next
        Print
  Next
  Inkey
EndOfCode


--- Code: ---  1
  2   3
  4   5   6
  7   8   9  10
 11  12  13  14  15
 16  17  18  19  20  21
 22  23  24  25  26  27  28
 29  30  31  32  33  34  35  36
 37  38  39  40  41  42  43  44  45
 46  47  48  49  50  51  52  53  54  55
 56  57  58  59  60  61  62  63  64  65  66
 67  68  69  70  71  72  73  74  75  76  77  78
 79  80  81  82  83  84  85  86  87  88  89  90  91
 92  93  94  95  96  97  98  99 100 101 102 103 104 105
106 107 108 109 110 111 112 113 114 115 116 117 118 119 120
121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136
137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153
154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171
172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190
191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210
--- End code ---

Version 2, strictly following the spacing specs:

include \masm32\MasmBasic\MasmBasic.inc         ; download
  SetGlobals rows, columns, ct
  Init
  round=0
  repeat 2
        Clr ct
        For_ rows=0 To 4+9*round
                For_ columns=0 To rows
                                inc ct
                                Print Str$("%__i", ct)
                                .if columns>6
                                        Print " "
                                .endif
                Next
                Print
        Next
        Print
        round=round+1
  endm
  Inkey
EndOfCode


--- Code: ---  1
  2  3
  4  5  6
  7  8  9 10
 11 12 13 14 15

  1
  2  3
  4  5  6
  7  8  9 10
 11 12 13 14 15
 16 17 18 19 20 21
 22 23 24 25 26 27 28
 29 30 31 32 33 34 35 36
 37 38 39 40 41 42 43 44  45
 46 47 48 49 50 51 52 53  54  55
 56 57 58 59 60 61 62 63  64  65  66
 67 68 69 70 71 72 73 74  75  76  77  78
 79 80 81 82 83 84 85 86  87  88  89  90  91
 92 93 94 95 96 97 98 99 100 101 102 103 104 105
--- End code ---

Tomaaz:

--- Quote from: Mike Lobanovsky on October 17, 2018, 08:40:38 PM ---
--- Quote from: B+ on October 17, 2018, 02:52:37 PM ---Yep! John's got a good one! :)

--- End quote ---

Yes Mark,

And while we're at it let me note that John's code beats Tomaaz's kabbala hands down 3 times:
* readability wise
* code length wise
* speed wiseSlightly underdone, you say? ;)

;D

--- End quote ---

While I really enjoyed reading your comments, I need to say that you've totally missed the point of my example. :) It wasn't about speed, readability was the last thing I was concerned about and I didn't really care about the beauty of the output. It was more about finding a less obvious mathematical solution to the problem. Also I wanted it to be specific to the used language. Of course, I could have written something like this:


--- Code: ---x, y = 1, 1
print "Number of rows? "
gets.to_i.times do
y.times do
print x, "\t"
x += 1
end
puts
y += 1
end

--- End code ---


The question is - is this boring and obvious code worth posting? IMO, it isn't. Hence "But please, try to do something different than two loops and couple of variables. ;)" at the end of my post. This code can be easily translated to almost every language. The one from my first post can't, because, due to use of ranges, arrays and OO syntax is Ruby specific. Also, I wanted to have one variable in the entire program. It took me about half an hour to re-study high school level maths, but it was fun.

Mike Lobanovsky:
Tomaaz,


--- Quote ---... due to use of ranges, arrays and OO syntax is Ruby specific.
--- End quote ---

What was the point in building your challenge around alien language specific features? What were you expecting from the Beginner's ASIC audience? Lists, ranges, and OOP re-written via line numbers and goto's???

There's no such stuff in BASIC and will never be, and you know that no worse than I do regardless of any meaning you pretend to have put in your challenge.

There's absolutely no point either in an alternative mathematical solution that's almost twice longer, twenty times slower, and cryptic beyond recognition at least to the BASIC audience. IMO you plain wasted that half hour of your life for nothing.

Navigation

[0] Message Index

[#] Next page

[*] Previous page

Go to full version