Skip to content

Commit 73c6f32

Browse files
committed
Big changes in Numbers and Combinatorics
1 parent 0c960cb commit 73c6f32

File tree

4 files changed

+62
-64
lines changed

4 files changed

+62
-64
lines changed

README.md

Lines changed: 28 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -500,10 +500,10 @@ Numbers
500500
<Fraction> = fractions.Fraction(0, 1) # Or: Fraction(numerator=0, denominator=1)
501501
<Decimal> = decimal.Decimal(<str/int>) # Or: Decimal((sign, digits, exponent))
502502
```
503-
* **`'int(<str>)'` and `'float(<str>)'` raise ValueError on malformed strings.**
504-
* **Decimal numbers are stored exactly, unlike most floats where `'1.1 + 2.2 != 3.3'`.**
503+
* **Decimal numbers are stored exactly, unlike most floats where: `'1.1 + 2.2 != 3.3'`.**
505504
* **Floats can be compared with: `'math.isclose(<float>, <float>)'`.**
506505
* **Precision of decimal operations is set with: `'decimal.getcontext().prec = <int>'`.**
506+
* **Bools can be used anywhere ints can, because bool is a subclass of int: `'True + 1 == 2'`.**
507507

508508
### Basic Functions
509509
```python
@@ -526,18 +526,23 @@ from statistics import mean, median, variance # Also: stdev, quantiles, grou
526526

527527
### Random
528528
```python
529-
from random import random, randint, choice # Also: shuffle, gauss, triangular, seed.
530-
<float> = random() # A float inside [0, 1).
531-
<int> = randint(from_inc, to_inc) # An int inside [from_inc, to_inc].
532-
<el> = choice(<sequence>) # Keeps the sequence intact.
529+
from random import random, randint, uniform # Also: gauss, choice, shuffle, seed.
533530
```
534531

535-
### Bin, Hex
536532
```python
537-
<int> = ±0b<bin> # Or: ±0x<hex>
538-
<int> = int('±<bin>', 2) # Or: int('±<hex>', 16)
539-
<int> = int('±0b<bin>', 0) # Or: int('±0x<hex>', 0)
540-
<str> = bin(<int>) # Returns '[-]0b<bin>'. Also hex().
533+
<float> = random() # Returns a float inside [0, 1).
534+
<num> = randint/uniform(a, b) # Returns an int/float inside [a, b].
535+
<float> = gauss(mean, stdev) # Also triangular(low, high, mode).
536+
<el> = choice(<sequence>) # Keeps it intact. Also sample(pop, k).
537+
shuffle(<list>) # Shuffles the list in place.
538+
```
539+
540+
### Hexadecimal Numbers
541+
```python
542+
<int> = ±0x<hex> # Or: ±0b<bin>
543+
<int> = int('±<hex>', 16) # Or: int('±<bin>', 2)
544+
<int> = int('±0x<hex>', 0) # Or: int('±0b<bin>', 0)
545+
<str> = hex(<int>) # Returns '[-]0x<hex>'. Also bin().
541546
```
542547

543548
### Bitwise Operators
@@ -563,30 +568,24 @@ import itertools as it
563568
```
564569

565570
```python
566-
>>> list(it.product('abc', 'abc')) # a b c
567-
[('a', 'a'), ('a', 'b'), ('a', 'c'), # a x x x
568-
('b', 'a'), ('b', 'b'), ('b', 'c'), # b x x x
569-
('c', 'a'), ('c', 'b'), ('c', 'c')] # c x x x
570-
```
571-
572-
```python
573-
>>> list(it.combinations('abc', 2)) # a b c
574-
[('a', 'b'), ('a', 'c'), # a . x x
575-
('b', 'c')] # b . . x
571+
>>> list(it.product('abc', 'abc')) # a b c
572+
[('a', 'a'), ('a', 'b'), ('a', 'c'), # a x x x
573+
('b', 'a'), ('b', 'b'), ('b', 'c'), # b x x x
574+
('c', 'a'), ('c', 'b'), ('c', 'c')] # c x x x
576575
```
577576

578577
```python
579-
>>> list(it.combinations_with_replacement('abc', 2)) # a b c
580-
[('a', 'a'), ('a', 'b'), ('a', 'c'), # a x x x
581-
('b', 'b'), ('b', 'c'), # b . x x
582-
('c', 'c')] # c . . x
578+
>>> list(it.permutations('abc', 2)) # a b c
579+
[('a', 'b'), ('a', 'c'), # a . x x
580+
('b', 'a'), ('b', 'c'), # b x . x
581+
('c', 'a'), ('c', 'b')] # c x x .
583582
```
584583

585584
```python
586-
>>> list(it.permutations('abc', 2)) # a b c
587-
[('a', 'b'), ('a', 'c'), # a . x x
588-
('b', 'a'), ('b', 'c'), # b x . x
589-
('c', 'a'), ('c', 'b')] # c x x .
585+
>>> list(it.combinations('abc', 2)) # a b c
586+
[('a', 'b'), ('a', 'c'), # a . x x
587+
('b', 'c'), # b . . x
588+
] # c . . .
590589
```
591590

592591

index.html

Lines changed: 27 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@
5656

5757
<body>
5858
<header>
59-
<aside>March 16, 2025</aside>
59+
<aside>March 21, 2025</aside>
6060
<a href="https://gto76.github.io" rel="author">Jure Šorn</a>
6161
</header>
6262

@@ -463,10 +463,10 @@
463463
</code></pre></div>
464464

465465
<ul>
466-
<li><strong><code class="python hljs"><span class="hljs-string">'int(&lt;str&gt;)'</span></code> and <code class="python hljs"><span class="hljs-string">'float(&lt;str&gt;)'</span></code> raise ValueError on malformed strings.</strong></li>
467-
<li><strong>Decimal numbers are stored exactly, unlike most floats where <code class="python hljs"><span class="hljs-string">'1.1 + 2.2 != 3.3'</span></code>.</strong></li>
466+
<li><strong>Decimal numbers are stored exactly, unlike most floats where: <code class="python hljs"><span class="hljs-string">'1.1 + 2.2 != 3.3'</span></code>.</strong></li>
468467
<li><strong>Floats can be compared with: <code class="python hljs"><span class="hljs-string">'math.isclose(&lt;float&gt;, &lt;float&gt;)'</span></code>.</strong></li>
469468
<li><strong>Precision of decimal operations is set with: <code class="python hljs"><span class="hljs-string">'decimal.getcontext().prec = &lt;int&gt;'</span></code>.</strong></li>
469+
<li><strong>Bools can be used anywhere ints can, because bool is a subclass of int: <code class="python hljs"><span class="hljs-string">'True + 1 == 2'</span></code>.</strong></li>
470470
</ul>
471471
<div><h3 id="basicfunctions">Basic Functions</h3><pre><code class="python language-python hljs">&lt;num&gt; = pow(&lt;num&gt;, &lt;num&gt;) <span class="hljs-comment"># Or: &lt;number&gt; ** &lt;number&gt;</span>
472472
&lt;num&gt; = abs(&lt;num&gt;) <span class="hljs-comment"># &lt;float&gt; = abs(&lt;complex&gt;)</span>
@@ -481,16 +481,19 @@
481481
<div><h3 id="statistics">Statistics</h3><pre><code class="python language-python hljs"><span class="hljs-keyword">from</span> statistics <span class="hljs-keyword">import</span> mean, median, variance <span class="hljs-comment"># Also: stdev, quantiles, groupby.</span>
482482
</code></pre></div>
483483

484-
<div><h3 id="random">Random</h3><pre><code class="python language-python hljs"><span class="hljs-keyword">from</span> random <span class="hljs-keyword">import</span> random, randint, choice <span class="hljs-comment"># Also: shuffle, gauss, triangular, seed.</span>
485-
&lt;float&gt; = random() <span class="hljs-comment"># A float inside [0, 1).</span>
486-
&lt;int&gt; = randint(from_inc, to_inc) <span class="hljs-comment"># An int inside [from_inc, to_inc].</span>
487-
&lt;el&gt; = choice(&lt;sequence&gt;) <span class="hljs-comment"># Keeps the sequence intact.</span>
484+
<div><h3 id="random">Random</h3><pre><code class="python language-python hljs"><span class="hljs-keyword">from</span> random <span class="hljs-keyword">import</span> random, randint, uniform <span class="hljs-comment"># Also: gauss, choice, shuffle, seed.</span>
488485
</code></pre></div>
489486

490-
<div><h3 id="binhex">Bin, Hex</h3><pre><code class="python language-python hljs">&lt;int&gt; = ±<span class="hljs-number">0b</span>&lt;bin&gt; <span class="hljs-comment"># Or: ±0x&lt;hex&gt;</span>
491-
&lt;int&gt; = int(<span class="hljs-string">'±&lt;bin&gt;'</span>, <span class="hljs-number">2</span>) <span class="hljs-comment"># Or: int('±&lt;hex&gt;', 16)</span>
492-
&lt;int&gt; = int(<span class="hljs-string">'±0b&lt;bin&gt;'</span>, <span class="hljs-number">0</span>) <span class="hljs-comment"># Or: int('±0x&lt;hex&gt;', 0)</span>
493-
&lt;str&gt; = bin(&lt;int&gt;) <span class="hljs-comment"># Returns '[-]0b&lt;bin&gt;'. Also hex().</span>
487+
<pre><code class="python language-python hljs">&lt;float&gt; = random() <span class="hljs-comment"># Returns a float inside [0, 1).</span>
488+
&lt;num&gt; = randint/uniform(a, b) <span class="hljs-comment"># Returns an int/float inside [a, b].</span>
489+
&lt;float&gt; = gauss(mean, stdev) <span class="hljs-comment"># Also triangular(low, high, mode).</span>
490+
&lt;el&gt; = choice(&lt;sequence&gt;) <span class="hljs-comment"># Keeps it intact. Also sample(pop, k).</span>
491+
shuffle(&lt;list&gt;) <span class="hljs-comment"># Shuffles the list in place.</span>
492+
</code></pre>
493+
<div><h3 id="hexadecimalnumbers">Hexadecimal Numbers</h3><pre><code class="python language-python hljs">&lt;int&gt; = ±<span class="hljs-number">0x</span>&lt;hex&gt; <span class="hljs-comment"># Or: ±0b&lt;bin&gt;</span>
494+
&lt;int&gt; = int(<span class="hljs-string">'±&lt;hex&gt;'</span>, <span class="hljs-number">16</span>) <span class="hljs-comment"># Or: int('±&lt;bin&gt;', 2)</span>
495+
&lt;int&gt; = int(<span class="hljs-string">'±0x&lt;hex&gt;'</span>, <span class="hljs-number">0</span>) <span class="hljs-comment"># Or: int('±0b&lt;bin&gt;', 0)</span>
496+
&lt;str&gt; = hex(&lt;int&gt;) <span class="hljs-comment"># Returns '[-]0x&lt;hex&gt;'. Also bin().</span>
494497
</code></pre></div>
495498

496499
<div><h3 id="bitwiseoperators">Bitwise Operators</h3><pre><code class="python language-python hljs">&lt;int&gt; = &lt;int&gt; &amp; &lt;int&gt; <span class="hljs-comment"># And (0b1100 &amp; 0b1010 == 0b1000).</span>
@@ -507,24 +510,20 @@
507510
[(<span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>), (<span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">1</span>), (<span class="hljs-number">0</span>, <span class="hljs-number">1</span>, <span class="hljs-number">0</span>), (<span class="hljs-number">0</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>),
508511
(<span class="hljs-number">1</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>), (<span class="hljs-number">1</span>, <span class="hljs-number">0</span>, <span class="hljs-number">1</span>), (<span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">0</span>), (<span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>)]
509512
</code></pre>
510-
<pre><code class="python language-python hljs"><span class="hljs-meta">&gt;&gt;&gt; </span>list(it.product(<span class="hljs-string">'abc'</span>, <span class="hljs-string">'abc'</span>)) <span class="hljs-comment"># a b c</span>
511-
[(<span class="hljs-string">'a'</span>, <span class="hljs-string">'a'</span>), (<span class="hljs-string">'a'</span>, <span class="hljs-string">'b'</span>), (<span class="hljs-string">'a'</span>, <span class="hljs-string">'c'</span>), <span class="hljs-comment"># a x x x</span>
512-
(<span class="hljs-string">'b'</span>, <span class="hljs-string">'a'</span>), (<span class="hljs-string">'b'</span>, <span class="hljs-string">'b'</span>), (<span class="hljs-string">'b'</span>, <span class="hljs-string">'c'</span>), <span class="hljs-comment"># b x x x</span>
513-
(<span class="hljs-string">'c'</span>, <span class="hljs-string">'a'</span>), (<span class="hljs-string">'c'</span>, <span class="hljs-string">'b'</span>), (<span class="hljs-string">'c'</span>, <span class="hljs-string">'c'</span>)] <span class="hljs-comment"># c x x x</span>
514-
</code></pre>
515-
<pre><code class="python language-python hljs"><span class="hljs-meta">&gt;&gt;&gt; </span>list(it.combinations(<span class="hljs-string">'abc'</span>, <span class="hljs-number">2</span>)) <span class="hljs-comment"># a b c</span>
516-
[(<span class="hljs-string">'a'</span>, <span class="hljs-string">'b'</span>), (<span class="hljs-string">'a'</span>, <span class="hljs-string">'c'</span>), <span class="hljs-comment"># a . x x</span>
517-
(<span class="hljs-string">'b'</span>, <span class="hljs-string">'c'</span>)] <span class="hljs-comment"># b . . x</span>
513+
<pre><code class="python language-python hljs"><span class="hljs-meta">&gt;&gt;&gt; </span>list(it.product(<span class="hljs-string">'abc'</span>, <span class="hljs-string">'abc'</span>)) <span class="hljs-comment"># a b c</span>
514+
[(<span class="hljs-string">'a'</span>, <span class="hljs-string">'a'</span>), (<span class="hljs-string">'a'</span>, <span class="hljs-string">'b'</span>), (<span class="hljs-string">'a'</span>, <span class="hljs-string">'c'</span>), <span class="hljs-comment"># a x x x</span>
515+
(<span class="hljs-string">'b'</span>, <span class="hljs-string">'a'</span>), (<span class="hljs-string">'b'</span>, <span class="hljs-string">'b'</span>), (<span class="hljs-string">'b'</span>, <span class="hljs-string">'c'</span>), <span class="hljs-comment"># b x x x</span>
516+
(<span class="hljs-string">'c'</span>, <span class="hljs-string">'a'</span>), (<span class="hljs-string">'c'</span>, <span class="hljs-string">'b'</span>), (<span class="hljs-string">'c'</span>, <span class="hljs-string">'c'</span>)] <span class="hljs-comment"># c x x x</span>
518517
</code></pre>
519-
<pre><code class="python language-python hljs"><span class="hljs-meta">&gt;&gt;&gt; </span>list(it.combinations_with_replacement(<span class="hljs-string">'abc'</span>, <span class="hljs-number">2</span>)) <span class="hljs-comment"># a b c</span>
520-
[(<span class="hljs-string">'a'</span>, <span class="hljs-string">'a'</span>), (<span class="hljs-string">'a'</span>, <span class="hljs-string">'b'</span>), (<span class="hljs-string">'a'</span>, <span class="hljs-string">'c'</span>), <span class="hljs-comment"># a x x x</span>
521-
(<span class="hljs-string">'b'</span>, <span class="hljs-string">'b'</span>), (<span class="hljs-string">'b'</span>, <span class="hljs-string">'c'</span>), <span class="hljs-comment"># b . x x</span>
522-
(<span class="hljs-string">'c'</span>, <span class="hljs-string">'c'</span>)] <span class="hljs-comment"># c . . x</span>
518+
<pre><code class="python language-python hljs"><span class="hljs-meta">&gt;&gt;&gt; </span>list(it.permutations(<span class="hljs-string">'abc'</span>, <span class="hljs-number">2</span>)) <span class="hljs-comment"># a b c</span>
519+
[(<span class="hljs-string">'a'</span>, <span class="hljs-string">'b'</span>), (<span class="hljs-string">'a'</span>, <span class="hljs-string">'c'</span>), <span class="hljs-comment"># a . x x</span>
520+
(<span class="hljs-string">'b'</span>, <span class="hljs-string">'a'</span>), (<span class="hljs-string">'b'</span>, <span class="hljs-string">'c'</span>), <span class="hljs-comment"># b x . x</span>
521+
(<span class="hljs-string">'c'</span>, <span class="hljs-string">'a'</span>), (<span class="hljs-string">'c'</span>, <span class="hljs-string">'b'</span>)] <span class="hljs-comment"># c x x .</span>
523522
</code></pre>
524-
<pre><code class="python language-python hljs"><span class="hljs-meta">&gt;&gt;&gt; </span>list(it.permutations(<span class="hljs-string">'abc'</span>, <span class="hljs-number">2</span>)) <span class="hljs-comment"># a b c</span>
525-
[(<span class="hljs-string">'a'</span>, <span class="hljs-string">'b'</span>), (<span class="hljs-string">'a'</span>, <span class="hljs-string">'c'</span>), <span class="hljs-comment"># a . x x</span>
526-
(<span class="hljs-string">'b'</span>, <span class="hljs-string">'a'</span>), (<span class="hljs-string">'b'</span>, <span class="hljs-string">'c'</span>), <span class="hljs-comment"># b x . x</span>
527-
(<span class="hljs-string">'c'</span>, <span class="hljs-string">'a'</span>), (<span class="hljs-string">'c'</span>, <span class="hljs-string">'b'</span>)] <span class="hljs-comment"># c x x .</span>
523+
<pre><code class="python language-python hljs"><span class="hljs-meta">&gt;&gt;&gt; </span>list(it.combinations(<span class="hljs-string">'abc'</span>, <span class="hljs-number">2</span>)) <span class="hljs-comment"># a b c</span>
524+
[(<span class="hljs-string">'a'</span>, <span class="hljs-string">'b'</span>), (<span class="hljs-string">'a'</span>, <span class="hljs-string">'c'</span>), <span class="hljs-comment"># a . x x</span>
525+
(<span class="hljs-string">'b'</span>, <span class="hljs-string">'c'</span>), <span class="hljs-comment"># b . . x</span>
526+
] <span class="hljs-comment"># c . . .</span>
528527
</code></pre>
529528
<div><h2 id="datetime"><a href="#datetime" name="datetime">#</a>Datetime</h2><p><strong>Provides 'date', 'time', 'datetime' and 'timedelta' classes. All are immutable and hashable.</strong></p><pre><code class="python language-python hljs"><span class="hljs-comment"># $ pip3 install python-dateutil</span>
530529
<span class="hljs-keyword">from</span> datetime <span class="hljs-keyword">import</span> date, time, datetime, timedelta, timezone
@@ -2945,7 +2944,7 @@ <h3 id="format-2">Format</h3><div><h4 id="forstandardtypesizesandmanualalignment
29452944

29462945

29472946
<footer>
2948-
<aside>March 16, 2025</aside>
2947+
<aside>March 21, 2025</aside>
29492948
<a href="https://gto76.github.io" rel="author">Jure Šorn</a>
29502949
</footer>
29512950

parse.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,10 @@ const TOC =
4343
'</code></pre>\n';
4444

4545
const BIN_HEX =
46-
'&lt;int&gt; = ±<span class="hljs-number">0b</span>&lt;bin&gt; <span class="hljs-comment"># Or: ±0x&lt;hex&gt;</span>\n' +
47-
'&lt;int&gt; = int(<span class="hljs-string">\'±&lt;bin&gt;\'</span>, <span class="hljs-number">2</span>) <span class="hljs-comment"># Or: int(\'±&lt;hex&gt;\', 16)</span>\n' +
48-
'&lt;int&gt; = int(<span class="hljs-string">\'±0b&lt;bin&gt;\'</span>, <span class="hljs-number">0</span>) <span class="hljs-comment"># Or: int(\'±0x&lt;hex&gt;\', 0)</span>\n' +
49-
'&lt;str&gt; = bin(&lt;int&gt;) <span class="hljs-comment"># Returns \'[-]0b&lt;bin&gt;\'. Also hex().</span>\n';
46+
'&lt;int&gt; = ±<span class="hljs-number">0x</span>&lt;hex&gt; <span class="hljs-comment"># Or: ±0b&lt;bin&gt;</span>\n' +
47+
'&lt;int&gt; = int(<span class="hljs-string">\'±&lt;hex&gt;\'</span>, <span class="hljs-number">16</span>) <span class="hljs-comment"># Or: int(\'±&lt;bin&gt;\', 2)</span>\n' +
48+
'&lt;int&gt; = int(<span class="hljs-string">\'±0x&lt;hex&gt;\'</span>, <span class="hljs-number">0</span>) <span class="hljs-comment"># Or: int(\'±0b&lt;bin&gt;\', 0)</span>\n' +
49+
'&lt;str&gt; = hex(&lt;int&gt;) <span class="hljs-comment"># Returns \'[-]0x&lt;hex&gt;\'. Also bin().</span>\n';
5050

5151
const CACHE =
5252
'<span class="hljs-keyword">from</span> functools <span class="hljs-keyword">import</span> cache\n' +
@@ -922,7 +922,7 @@ function fixClasses() {
922922
}
923923

924924
function fixHighlights() {
925-
$(`code:contains(<int> = ±0b<bin>)`).html(BIN_HEX);
925+
$(`code:contains(<int> = ±0x<hex>)`).html(BIN_HEX);
926926
$(`code:contains( + fib(n)`).html(CACHE);
927927
$(`code:contains(>>> def add)`).html(SPLAT);
928928
$(`code:contains(@debug(print_result=True))`).html(PARAMETRIZED_DECORATOR);

0 commit comments

Comments
 (0)