From c057173d21f64fa7889e348fa3b66468da7f9440 Mon Sep 17 00:00:00 2001 From: sahilbheke Date: Tue, 21 Jan 2025 17:05:00 +0530 Subject: [PATCH 1/2] add Day 6 internal notes & assignmet document --- ... & Channels _ Go Training Session Notes.docx | Bin 0 -> 12954 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 Day6/Day 6 _ Routines & Channels _ Go Training Session Notes.docx diff --git a/Day6/Day 6 _ Routines & Channels _ Go Training Session Notes.docx b/Day6/Day 6 _ Routines & Channels _ Go Training Session Notes.docx new file mode 100644 index 0000000000000000000000000000000000000000..19ae289275acb0041978f00b4ccf96a5d8c9a434 GIT binary patch literal 12954 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 Date: Wed, 22 Jan 2025 17:46:39 +0530 Subject: [PATCH 2/2] Add Day 6 Assignment 1) Conversation using Goroutines 2) Reserse a String --- Day6/conversation.go | 73 ++++++++++++++++++++++++++++++++++++++++++ Day6/reserse_string.go | 47 +++++++++++++++++++++++++++ 2 files changed, 120 insertions(+) create mode 100644 Day6/conversation.go create mode 100644 Day6/reserse_string.go diff --git a/Day6/conversation.go b/Day6/conversation.go new file mode 100644 index 0000000..0f7ae1b --- /dev/null +++ b/Day6/conversation.go @@ -0,0 +1,73 @@ +package main + +import ( + "fmt" + "sync" +) + +/* +1. Given a string containing conversation between alice and bob. In the string, if it reaches $, it means end of alice message and if it reaches #, it means end of bob's message. and if it reaches ^, +it means end of conversation ignore string after that. + +Note: given string doesn't contain any spaces. If message contains two continuous conversations from one person it should be printed one after another as given in the example. + +write a program to separate out messages from alice and bob. Write messages from alice and bob on seperate channels, whenever a message from alice/bob, print it in front of their name as shown in the example below: + +Note: there is a single space before and after colon(:) and no space before and after comma. + +e.g: "helloBob$helloalice#howareyou?#Iamgood.howareyou?$^" +output: alice : helloBob,bob : helloalice,bob : howareyou?,alice : Iamgood.howareyou? +*/ + +func main() { + var message string = "helloBob$helloalice#howareyou?#Iamgood.howareyou?$^" + aliceChannel := make(chan string) + bobChannel := make(chan string) + var wg sync.WaitGroup + + // Index for start of new message. + var prevIndex int = 0 + + for i := 0; i < len(message)-1; i++ { + + if message[i] == '$' { + + // If alice talks + messageSlice := message[prevIndex:i] + wg.Add(1) + + go func(i int) { + if i == len(message)-2 { + // End of conversation + fmt.Print("alice : ", <-aliceChannel) + } else { + fmt.Print("alice : ", <-aliceChannel, ",") + } + wg.Done() + }(i) + + aliceChannel <- messageSlice + prevIndex = i + 1 + + } else if message[i] == '#' { + + // If bob talks + messageSlice := message[prevIndex:i] + wg.Add(1) + + go func(i int) { + if i == len(message)-2 { + // End of conversation + fmt.Print("bob : ", <-bobChannel) + } else { + fmt.Print("bob : ", <-bobChannel, ",") + } + wg.Done() + }(i) + + bobChannel <- messageSlice + prevIndex = i + 1 + } + wg.Wait() + } +} diff --git a/Day6/reserse_string.go b/Day6/reserse_string.go new file mode 100644 index 0000000..9d4b7c7 --- /dev/null +++ b/Day6/reserse_string.go @@ -0,0 +1,47 @@ +package main + +import ( + "fmt" + "runtime" + "sync" +) + +/* +2. Given a string, reverse it using one go routine.And inside go routine print reversed string and number of goroutines launched + +e.g: Input: test123 output: 321tset 2 +*/ + +func reverseString(message string, wg *sync.WaitGroup) { + + rns := []rune(message) + + for i, j := 0, len(rns)-1; i < j; i, j = i+1, j-1 { + + rns[i], rns[j] = rns[j], rns[i] + + } + + fmt.Print(string(rns), " ") + wg.Done() +} + +func main() { + + var message string + fmt.Println("Enter string to reverse") + _, err := fmt.Scanf("%v", &message) + if err != nil { + fmt.Println("Invalid input string") + return + } + + var wg sync.WaitGroup + + wg.Add(1) + go reverseString(message, &wg) + numGoroutines := runtime.NumGoroutine() + wg.Wait() + + fmt.Println(numGoroutines) +}