Skip to content

Commit 3c5426f

Browse files
docs: auto-sync Rosetta Code examples from zenc repo
1 parent 038b67b commit 3c5426f

34 files changed

Lines changed: 1084 additions & 46 deletions

rosetta/Angle_difference_between_two_bearings.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,11 @@ fn main() {
3333
(60175.77306795546, 42213.07192354373)
3434
];
3535
36-
"Differences (to 4dp) between these bearings:";
36+
println "Differences (to 4dp) between these bearings:";
3737
for pair in pairs {
3838
let (p0, p1) = pair;
3939
let diff = subtract(p0, p1);
40-
"{p0:12.4f}° and {p1:12.4f}° -> {diff:9.4f}°";
40+
println "{p0:12.4f}° and {p1:12.4f}° -> {diff:9.4f}°";
4141
}
4242
}
4343
```

rosetta/Arithmetic-geometric_mean.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ title = "Arithmetic-geometric mean"
1010
import "std/math.zc"
1111
1212
fn agm(a: f64, g: f64) -> f64 {
13-
let eps: const f64 = Math::pow(10.0, -14);
13+
let eps: const f64 = 1e-14;
1414
while Math::abs(a - g) > Math::abs(a) * eps {
1515
let t = a;
1616
a = (a + g) / 2.0;
@@ -21,7 +21,7 @@ fn agm(a: f64, g: f64) -> f64 {
2121
2222
fn main() {
2323
let a = agm(1.0, 1.0 / Math::sqrt(2.0));
24-
"{a:0.16f}";
24+
println "{a:0.16f}";
2525
}
2626
```
2727

rosetta/Determine_if_a_string_is_numeric.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,12 @@ fn is_numeric(s: const string) -> bool {
1515
}
1616
1717
fn main() {
18-
"Are these strings numeric?\n"
18+
println "Are these strings numeric?\n"
1919
let tests: const string[8] = [NULL, "1", " 3.14", "-100", "1e2", "NaN", "0xaf", "rose"];
2020
for t in tests {
2121
let isnum = is_numeric(t);
2222
let yn = isnum ? "yes" : "no";
23-
"{t:-6s} -> {yn}";
23+
println "{t:-6s} -> {yn}";
2424
}
2525
}
2626
```

rosetta/Diversity_prediction_theorem.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,15 @@ title = "Diversity prediction theorem"
99
```zc
1010
fn average_square_diff(f: f64, preds: f64*, size: usize) -> f64 {
1111
let sum = 0.0;
12-
for i in 0 ..< size {
12+
for i in 0..<size {
1313
sum += (preds[i] - f) * (preds[i] - f);
1414
}
1515
return sum / size;
1616
}
1717
1818
fn diversity_theorem(truth: f64, preds: f64*, size: usize) -> (f64, f64, f64) {
1919
let sum = 0.0;
20-
for i in 0 ..< size {
20+
for i in 0..<size {
2121
sum += preds[i];
2222
}
2323
let av = sum / size;
@@ -37,9 +37,9 @@ fn main() {
3737
res[1] = diversity_theorem(truth, a2, 4);
3838
for r in res {
3939
let (ae, ce, div) = r;
40-
"Average-error {ae:6.3f}";
41-
"Crowd-error {ce:6.3f}";
42-
"Diversity {div:6.3f}\n";
40+
println "Average-error {ae:6.3f}";
41+
println "Crowd-error {ce:6.3f}";
42+
println "Diversity {div:6.3f}\n";
4343
}
4444
}
4545
```
Lines changed: 169 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,169 @@
1+
+++
2+
title = "Experimental Verification of the NKTg Law Using NASA Neptune Data (2023–2024)"
3+
+++
4+
5+
# Experimental Verification of the NKTg Law Using NASA Neptune Data (2023–2024)
6+
7+
{{trans|Q#}}
8+
9+
```zc
10+
import "std/math.zc"
11+
12+
fn compute_nktg(x: f64, v: f64, m: f64, dm_dt: f64) {
13+
let p = m * v;
14+
let nktg1 = x * p;
15+
let nktg2 = dm_dt * p;
16+
let nktg = Math::sqrt(nktg1 * nktg1 + nktg2 * nktg2);
17+
18+
println "--------------------------------------------";
19+
println "Position (x) : {x:0.0f}";
20+
println "Velocity (v) : {v:0.2f}";
21+
println "Mass (m) : {m:0.0f}";
22+
println "Momentum (p = m * v) : {p:0.0f}";
23+
println "NKTg1 = x * p : {nktg1:0.0f}";
24+
println "NKTg2 = dm_dt * p : {nktg2:0.0f}";
25+
println "Total NKTg : {nktg:0.0f}";
26+
}
27+
28+
fn main() {
29+
println "============================================";
30+
println "NKTg Law - Neptune 2023 NASA Data";
31+
println "============================================";
32+
33+
// 2023 NASA Data (Neptune)
34+
let dm_dt = -0.00002000;
35+
36+
let data2023: (f64, f64, f64)[5] = [
37+
[4498396440.0, 5.43, 1.02430000e26],
38+
[4503443661.0, 5.43, 1.02429980e26],
39+
[4553946490.0, 5.43, 1.02429960e26],
40+
[4503443661.0, 5.43, 1.02429940e26],
41+
[4498396440.0, 5.43, 1.02429920e26]
42+
];
43+
44+
for e in data2023 {
45+
let (x, v, m) = e;
46+
compute_nktg(x, v, m, dm_dt);
47+
}
48+
49+
println "\n============================================";
50+
println "NKTg Law - Neptune 2024 Simulation";
51+
println "============================================";
52+
53+
let data2024: (f64, f64, f64)[5] = [
54+
(4498396440.0, 5.43, 1.02429900e26),
55+
(4503443661.0, 5.43, 1.02429880e26),
56+
(4553946490.0, 5.43, 1.02429860e26),
57+
(4503443661.0, 5.43, 1.02429840e26),
58+
(4498396440.0, 5.43, 1.02429820e26)
59+
];
60+
61+
for e in data2024 {
62+
let (x, v, m) = e;
63+
compute_nktg(x, v, m, dm_dt);
64+
}
65+
66+
println "\n============================================";
67+
println "Experiment Completed";
68+
println "============================================";
69+
}
70+
```
71+
72+
**Output:**
73+
74+
```
75+
76+
############################################ NKTg Law - Neptune 2023 NASA Data
77+
78+
--------------------------------------------
79+
Position (x) : 4498396440
80+
Velocity (v) : 5.43
81+
Mass (m) : 102430000000000008208252928
82+
Momentum (p = m * v) : 556194900000000047834988544
83+
NKTg1 = x * p : 2501985158106156083146661858719563776
84+
NKTg2 = dm_dt * p : -11123898000000002555904
85+
Total NKTg : 2501985158106156083146661858719563776
86+
--------------------------------------------
87+
Position (x) : 4503443661
88+
Velocity (v) : 5.43
89+
Mass (m) : 102429979999999995655749632
90+
Momentum (p = m * v) : 556194791399999965415604224
91+
NKTg1 = x * p : 2504791907611547214820196617625272320
92+
NKTg2 = dm_dt * p : -11123895827999999655936
93+
Total NKTg : 2504791907611547214820196617625272320
94+
--------------------------------------------
95+
Position (x) : 4553946490
96+
Velocity (v) : 5.43
97+
Mass (m) : 102429960000000000283115520
98+
Momentum (p = m * v) : 556194682799999951715696640
99+
NKTg1 = x * p : 2532880823493723022518856423204454400
100+
NKTg2 = dm_dt * p : -11123893656000000950272
101+
Total NKTg : 2532880823493723022518856423204454400
102+
--------------------------------------------
103+
Position (x) : 4503443661
104+
Velocity (v) : 5.43
105+
Mass (m) : 102429940000000004910481408
106+
Momentum (p = m * v) : 556194574200000006735265792
107+
NKTg1 = x * p : 2504790929463584156593795259823030272
108+
NKTg2 = dm_dt * p : -11123891484000000147456
109+
Total NKTg : 2504790929463584156593795259823030272
110+
--------------------------------------------
111+
Position (x) : 4498396440
112+
Velocity (v) : 5.43
113+
Mass (m) : 102429919999999992357978112
114+
Momentum (p = m * v) : 556194465599999924315881472
115+
NKTg1 = x * p : 2501983204002742083276785197042892800
116+
NKTg2 = dm_dt * p : -11123889311999999344640
117+
Total NKTg : 2501983204002742083276785197042892800
118+
119+
############################################ NKTg Law - Neptune 2024 Simulation
120+
121+
--------------------------------------------
122+
Position (x) : 4498396440
123+
Velocity (v) : 5.43
124+
Mass (m) : 102429899999999996985344000
125+
Momentum (p = m * v) : 556194356999999979335450624
126+
NKTg1 = x * p : 2501982715476888878457221210976550912
127+
NKTg2 = dm_dt * p : -11123887140000000638976
128+
Total NKTg : 2501982715476888878457221210976550912
129+
--------------------------------------------
130+
Position (x) : 4503443661
131+
Velocity (v) : 5.43
132+
Mass (m) : 102429880000000001612709888
133+
Momentum (p = m * v) : 556194248399999965635543040
134+
NKTg1 = x * p : 2504789462241639274106288043766841344
135+
NKTg2 = dm_dt * p : -11123884967999999836160
136+
Total NKTg : 2504789462241639274106288043766841344
137+
--------------------------------------------
138+
Position (x) : 4553946490
139+
Velocity (v) : 5.43
140+
Mass (m) : 102429860000000006240075776
141+
Momentum (p = m * v) : 556194139800000020655112192
142+
NKTg1 = x * p : 2532878350700779383730369029335941120
143+
NKTg2 = dm_dt * p : -11123882796000001130496
144+
Total NKTg : 2532878350700779383730369029335941120
145+
--------------------------------------------
146+
Position (x) : 4503443661
147+
Velocity (v) : 5.43
148+
Mass (m) : 102429839999999993687572480
149+
Momentum (p = m * v) : 556194031199999938235727872
150+
NKTg1 = x * p : 2504788484093675920731981506611773440
151+
NKTg2 = dm_dt * p : -11123880624000000327680
152+
Total NKTg : 2504788484093675920731981506611773440
153+
--------------------------------------------
154+
Position (x) : 4498396440
155+
Velocity (v) : 5.43
156+
Mass (m) : 102429819999999998314938368
157+
Momentum (p = m * v) : 556193922599999993255297024
158+
NKTg1 = x * p : 2501980761373475468883154908005531648
159+
NKTg2 = dm_dt * p : -11123878452000001622016
160+
Total NKTg : 2501980761373475468883154908005531648
161+
162+
############################################ Experiment Completed
163+
164+
```
165+
166+
---
167+
**Attribution:** This is a community solution for the Rosetta Code task [**Experimental Verification of the NKTg Law Using NASA Neptune Data (2023–2024)**](https://rosettacode.org/wiki/Experimental_Verification_of_the_NKTg_Law_Using_NASA_Neptune_Data_(2023–2024)) in Zen C.
168+
169+
*This article uses material from the Rosetta Code article **Experimental Verification of the NKTg Law Using NASA Neptune Data (2023–2024)**, which is released under the [GNU Free Documentation License 1.3](https://www.gnu.org/licenses/fdl-1.3.html). A list of the original authors can be found in the [page history](https://rosettacode.org/wiki/Experimental_Verification_of_the_NKTg_Law_Using_NASA_Neptune_Data_(2023–2024)?action=history).*

rosetta/Experimental_Verification_of_the_NKTg_Law_in_Earth_Orbit_Based_on_NASA’s_2025_Earth_Dataset.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ struct OrbitalData {
1717
}
1818
1919
fn new_od(date: string, x: f64, v: f64, m: f64) -> OrbitalData {
20-
return OrbitalData { date: date, x: x, v: v, m: m }
20+
return OrbitalData { date: date, x: x, v: v, m: m };
2121
}
2222
2323
struct ResultRow {
@@ -32,7 +32,7 @@ struct ResultRow {
3232
3333
impl ResultRow {
3434
fn display(self) -> void {
35-
println "{.date:-12s} {.p:14.3e} {.nktg1:14.3e} {.nktg2:14.3e} {.v_sim:12.3e} {.v_nasa:12.3e} {.error:10.4f}%"
35+
println "{.date:-12s} {.p:14.3e} {.nktg1:14.3e} {.nktg2:14.3e} {.v_sim:12.3e} {.v_nasa:12.3e} {.error:10.4f}%";
3636
}
3737
}
3838
@@ -71,10 +71,10 @@ fn main() {
7171
("12/31/2025", 3.0286e4)
7272
];
7373
74-
"\nExperimental Verification of NKTg Law (Earth 2025)\n"
74+
println "\nExperimental Verification of NKTg Law (Earth 2025)\n";
7575
76-
"Date Momentum(p) NKTg1 NKTg2 v_sim v_NASA Error"
77-
"-----------------------------------------------------------------------------------------------"
76+
println "Date Momentum(p) NKTg1 NKTg2 v_sim v_NASA Error";
77+
println "-----------------------------------------------------------------------------------------------";
7878
7979
for i, data in sim_2025 {
8080
let p = momentum(data.m, data.v);

rosetta/Hello_world_Newline_omission.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ title = "Hello world/Newline omission"
66

77
```zc
88
fn main() {
9-
"Goodbye, World!" ..;
9+
print "Goodbye, World!";
1010
}
1111
```
1212

rosetta/Hello_world_Standard_error.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ title = "Hello world/Standard error"
66

77
```zc
88
fn main() {
9-
!"Goodbye, World!"
9+
eprintln "Goodbye, World!";
1010
}
1111
```
1212

rosetta/Hello_world_Text.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ title = "Hello world/Text"
66

77
```zc
88
fn main() {
9-
"Hello world!";
9+
println "Hello world!";
1010
}
1111
```
1212

rosetta/Inheritance_Multiple.md

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
+++
2+
title = "Inheritance/Multiple"
3+
+++
4+
5+
# Inheritance/Multiple
6+
7+
Zen C does not have classes but does have structs which can implement methods.
8+
9+
The language doesn't have inheritance as such but instead uses composition to embed other structs. Any number of structs can be embedded in this way.
10+
11+
In the following code, the CameraPhone struct embeds both the Camera and Phone structs in a way which enables it to call their methods.
12+
13+
```zc
14+
struct Camera {}
15+
16+
impl Camera {
17+
fn snap(self) { println "Taking a photo."; }
18+
}
19+
20+
struct Phone {}
21+
22+
impl Phone {
23+
fn call(self) { println "Calling home."; }
24+
}
25+
26+
struct CameraPhone {
27+
use camera : Camera;
28+
use phone : Phone;
29+
}
30+
31+
fn main() {
32+
let cp = CameraPhone{camera: Camera{}, phone: Phone{}};
33+
cp.camera.snap();
34+
cp.phone.call();
35+
}
36+
```
37+
38+
**Output:**
39+
40+
```
41+
Taking a photo.
42+
Calling home.
43+
```
44+
45+
---
46+
**Attribution:** This is a community solution for the Rosetta Code task [**Inheritance/Multiple**](https://rosettacode.org/wiki/Inheritance/Multiple) in Zen C.
47+
48+
*This article uses material from the Rosetta Code article **Inheritance/Multiple**, which is released under the [GNU Free Documentation License 1.3](https://www.gnu.org/licenses/fdl-1.3.html). A list of the original authors can be found in the [page history](https://rosettacode.org/wiki/Inheritance/Multiple?action=history).*

0 commit comments

Comments
 (0)