From f86bd9c3d67bcfe03c1bb0b468e5c66575755f16 Mon Sep 17 00:00:00 2001 From: ZennDev1337 Date: Tue, 26 Mar 2024 09:16:49 +0100 Subject: [PATCH] first commit --- go.mod | 3 ++ main.go | 86 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 89 insertions(+) create mode 100644 go.mod create mode 100644 main.go diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..0379021 --- /dev/null +++ b/go.mod @@ -0,0 +1,3 @@ +module addTwoNumbers + +go 1.22 diff --git a/main.go b/main.go new file mode 100644 index 0000000..983009e --- /dev/null +++ b/main.go @@ -0,0 +1,86 @@ +package main + +import ( + "errors" + "fmt" + "strconv" +) + +type ListNode struct { + Val int + Next *ListNode +} + +func (l *ListNode) Add(val int) { + newNode := &ListNode{Val: val} + current := l + for current.Next != nil { + current = current.Next + } + current.Next = newNode +} +func (l *ListNode) Get(index int) (int, error) { + current := l + for i := 0; i < index; i++ { + if current.Next != nil { + current = current.Next + } else { + return 0, errors.New("there is nothing to index at") + } + + } + return current.Val, nil +} +func (l *ListNode) GetNr() int { + res := 0 + multiplyer := 1 + current := l + for current.Next != nil { + res = res + (current.Val * multiplyer) + multiplyer = multiplyer * 10 + current = current.Next + } + res = res + (current.Val * multiplyer) + return res +} +func (l *ListNode) Length() int { + count := 0 + if l.Val != 0 { + count++ + } + current := l + for current.Next != nil { + current = current.Next + count++ + } + return count +} + +func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode { + s2 := strconv.Itoa(l1.GetNr() + l2.GetNr()) + a := []rune(s2) + head := &ListNode{Val: 0} + res := head + + for _, r := range a { + nr, err := strconv.Atoi(string(r)) + if err != nil { + panic("lol") + } + res.Next = &ListNode{Val: nr} + res = res.Next + + } + return head.Next +} + +func main() { + l1 := ListNode{Val: 2} + l1.Add(4) + l1.Add(3) + l2 := ListNode{Val: 5} + l2.Add(6) + l2.Add(4) + l3 := addTwoNumbers(&l1, &l2) + fmt.Println(l3.GetNr()) +}