Skip to content

Commit 162ccee

Browse files
committed
Largest number
1 parent 5547a38 commit 162ccee

File tree

5 files changed

+135
-55
lines changed

5 files changed

+135
-55
lines changed

codes/generate_docs

0 Bytes
Binary file not shown.

codes/largest_number.mojo

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
### Largest Number
2+
### Arrange non-negative integers to form the largest possible number and return it as a string.
3+
4+
5+
fn largest_number(nums: List[Int]) raises -> String:
6+
if len(nums) == 0:
7+
return ""
8+
strs = List[String](capacity=len(nums))
9+
for each in nums:
10+
strs.append(String(each[]))
11+
sort[compare_fn](strs)
12+
result = StringSlice("").join(strs)
13+
return String(Int(result))
14+
15+
16+
@parameter
17+
fn compare_fn(left: String, right: String) -> Bool:
18+
return left + right > right + left
19+
20+
21+
from testing import assert_true
22+
23+
24+
fn main() raises:
25+
nums = List(10, 2)
26+
result = largest_number(nums)
27+
assert_true(result == "210", "Assertion failed")
28+
29+
nums = List(3, 30, 34, 5, 9)
30+
result = largest_number(nums)
31+
assert_true(result == "9534330", "Assertion failed")
32+
33+
nums = List(0, 0, 0, 0, 0)
34+
result = largest_number(nums)
35+
assert_true(result == "0", "Assertion failed")
36+
37+
nums = List[Int]()
38+
result = largest_number(nums)
39+
assert_true(result == "", "Assertion failed")

codes/magic.lock

Lines changed: 47 additions & 54 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

docs/index.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,4 +61,6 @@
6161

6262
🟢 [SIMD Select](simd_select.md) ➔ Select based on a SIMD (Single Instruction, Multiple Data) mask
6363

64-
🟢 [Last word length](last_word_length.md) ➔ Return the length of the last word in a given space-separated string
64+
🟢 [Last word length](last_word_length.md) ➔ Return the length of the last word in a given space-separated string
65+
66+
🟢 [Largest Number](largest_number.md) ➔ Arrange non-negative integers to form the largest possible number and return it as a string.

docs/largest_number.md

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
### Largest Number
2+
### Arrange non-negative integers to form the largest possible number and return it as a string.
3+
4+
```python
5+
6+
7+
fn largest_number(nums: List[Int]) raises -> String:
8+
if len(nums) == 0:
9+
return ""
10+
strs = List[String](capacity=len(nums))
11+
for each in nums:
12+
strs.append(String(each[]))
13+
sort[compare_fn](strs)
14+
result = StringSlice("").join(strs)
15+
return String(Int(result))
16+
17+
18+
@parameter
19+
fn compare_fn(left: String, right: String) -> Bool:
20+
return left + right > right + left
21+
22+
23+
from testing import assert_true
24+
25+
26+
fn main() raises:
27+
nums = List(10, 2)
28+
result = largest_number(nums)
29+
assert_true(result == "210", "Assertion failed")
30+
31+
nums = List(3, 30, 34, 5, 9)
32+
result = largest_number(nums)
33+
assert_true(result == "9534330", "Assertion failed")
34+
35+
nums = List(0, 0, 0, 0, 0)
36+
result = largest_number(nums)
37+
assert_true(result == "0", "Assertion failed")
38+
39+
nums = List[Int]()
40+
result = largest_number(nums)
41+
assert_true(result == "", "Assertion failed")
42+
43+
```
44+
45+
46+
[Source](https://github.com/ratulb/mojo_programming/blob/main/codes/largest_number.mojo)

0 commit comments

Comments
 (0)