Numbers with equal rises and falls: Difference between revisions
Content added Content deleted
Thundergnat (talk | contribs) m (syntax highlighting fixup automation) |
No edit summary |
||
Line 765: | Line 765: | ||
The 10,000,000th number is: 41909002 |
The 10,000,000th number is: 41909002 |
||
</pre> |
</pre> |
||
=={{header|Delphi}}== |
|||
{{works with|Delphi|6.0}} |
|||
{{libheader|SysUtils,StdCtrls}} |
|||
<syntaxhighlight lang="Delphi"> |
|||
procedure GetDigits(N: integer; var IA: TIntegerDynArray); |
|||
{Get an array of the integers in a number} |
|||
var T: integer; |
|||
begin |
|||
SetLength(IA,0); |
|||
repeat |
|||
begin |
|||
T:=N mod 10; |
|||
N:=N div 10; |
|||
SetLength(IA,Length(IA)+1); |
|||
IA[High(IA)]:=T; |
|||
end |
|||
until N<1; |
|||
end; |
|||
function HasEqualRiseFall(N: integer): boolean; |
|||
{Count rises and falls in numbers left to Right} |
|||
var I: integer; |
|||
var IA: TIntegerDynArray; |
|||
var Rise,Fall: integer; |
|||
begin |
|||
Rise:=0; Fall:=0; |
|||
GetDigits(N,IA); |
|||
for I:=High(IA) downto 1 do |
|||
if IA[I-1]>IA[I] then Inc(Rise) |
|||
else if IA[I-1]<IA[I] then Inc(Fall); |
|||
Result:=Rise=Fall; |
|||
end; |
|||
procedure ShowEqualRiseFall(Memo: TMemo); |
|||
var I,Cnt: integer; |
|||
var S: string; |
|||
begin |
|||
Cnt:=0; |
|||
S:=''; |
|||
for I:=1 to High(integer) do |
|||
if HasEqualRiseFall(I) then |
|||
begin |
|||
Inc(Cnt); |
|||
S:=S+Format('%4.0d', [I]); |
|||
if (Cnt mod 20)=0 then S:=S+CRLF; |
|||
if Cnt=200 then break; |
|||
end; |
|||
Memo.Text:=S; |
|||
Memo.Lines.Add('Count = '+IntToStr(Cnt)); |
|||
for I:=1 to High(integer) do |
|||
if HasEqualRiseFall(I) then |
|||
begin |
|||
Inc(Cnt); |
|||
if Cnt>=10000000 then |
|||
begin |
|||
Memo.Lines.Add('10-Million: '+IntToStr(I)); |
|||
break; |
|||
end; |
|||
end; |
|||
end; |
|||
</syntaxhighlight> |
|||
{{out}} |
|||
<pre> |
|||
1 2 3 4 5 6 7 8 9 11 22 33 44 55 66 77 88 99 101 102 |
|||
103 104 105 106 107 108 109 111 120 121 130 131 132 140 141 142 143 150 151 152 |
|||
153 154 160 161 162 163 164 165 170 171 172 173 174 175 176 180 181 182 183 184 |
|||
185 186 187 190 191 192 193 194 195 196 197 198 201 202 203 204 205 206 207 208 |
|||
209 212 213 214 215 216 217 218 219 222 230 231 232 240 241 242 243 250 251 252 |
|||
253 254 260 261 262 263 264 265 270 271 272 273 274 275 276 280 281 282 283 284 |
|||
285 286 287 290 291 292 293 294 295 296 297 298 301 302 303 304 305 306 307 308 |
|||
309 312 313 314 315 316 317 318 319 323 324 325 326 327 328 329 333 340 341 342 |
|||
343 350 351 352 353 354 360 361 362 363 364 365 370 371 372 373 374 375 376 380 |
|||
381 382 383 384 385 386 387 390 391 392 393 394 395 396 397 398 401 402 403 404 |
|||
Count = 200 |
|||
10-Million: 41907794 |
|||
Elapsed Time: 28.140 Sec. |
|||
</pre> |
|||
=={{header|F_Sharp|F#}}== |
=={{header|F_Sharp|F#}}== |