Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
pub:labprog:20181126 [2018/12/03 13:37]
lucafavalli
pub:labprog:20181126 [2018/12/03 14:02] (current)
lucafavalli
Line 3: Line 3:
 <​code>​ <​code>​
 /* /*
-Scrivere un programma go che legga due stringhe e restituisca in output un valore di verità +Scrivere un programma go (file Anagrammi.go) ​che legga due stringhe e restituisca in output un valore di verità 
-che indica se le due stringhe siano anagrammi.+che indica se le due stringhe siano una l'​anagramma dell'​altra.
  
 Potete provare a farlo in due modi: Potete provare a farlo in due modi:
-- usare le librerie di sistema e lo slicing (Hint: strings e sort...)+- usare le librerie di sistema e lo slicing ​ (Hint: strings e sort...)
 - usare le Map per contare le occorrenze dei caratteri - usare le Map per contare le occorrenze dei caratteri
 */ */
  
 + /*
 + c,1
 + i,1
 + a,1
 + o,1
 +
 + if val, ok := mymap["​key"​];​ !ok {
 +    //do something here
 + }
 + */
  
 +/*
 package main package main
 import "​fmt"​ import "​fmt"​
 func main() ​ { func main() ​ {
 +
  var s1,s2 string  var s1,s2 string
- var a bool+ //var a bool  // di troppo?
  var x,y map[rune]int  var x,y map[rune]int
 +
  x=make(map[rune]int)  x=make(map[rune]int)
- y=make(map[rune]int)+ y=make(map[rune]int)  
  fmt.Print("​Inserire la prima stringa: ")  fmt.Print("​Inserire la prima stringa: ")
  fmt.Scan(&​s1)  fmt.Scan(&​s1)
  fmt.Print("​Inserire la seconda stringa: ")  fmt.Print("​Inserire la seconda stringa: ")
  fmt.Scan(&​s2)  fmt.Scan(&​s2)
- a=anagramma(s1,​s2,​x,​y) + 
- if a==true{+ //a=anagramma(s1,​s2,​x,​y) 
 + 
 + // DONE "​ottimizzare"​ 
 + if len(s1) ​== len(s2) && anagramma(s1,​s2,​x,​y) ​{
  fmt.Println("​Le due stringhe sono una l'​anagramma dell'​altra."​)  fmt.Println("​Le due stringhe sono una l'​anagramma dell'​altra."​)
  }else{  }else{
Line 34: Line 51:
 func anagramma(s1 string, s2 string, x map[rune]int,​ y map[rune]int) bool { func anagramma(s1 string, s2 string, x map[rune]int,​ y map[rune]int) bool {
  var conta int  var conta int
 +
 + // if len(s1) != len(s2) { return false; }
  for _,r:=range s1{  for _,r:=range s1{
- x[r]=x[r]+1+ x[r]=x[r]+1 ​// se non c'era nulla cosa ritorna x[r]?  valore di default del tipo mappato
  }  }
 +
  for _,r:=range s2{  for _,r:=range s2{
  y[r]=y[r]+1  y[r]=y[r]+1
  }  }
 +
 +
  for runa1,​valore1:​=range x{  for runa1,​valore1:​=range x{
- for runa2,​valore2:​=range y{+ //if valore1, ok := y[runa1]; !ok { return false; } 
 + 
 + for runa2,​valore2:​=range y{ // usare mappa
  if runa1==runa2 && valore1==valore2{  if runa1==runa2 && valore1==valore2{
  conta++  conta++
  }  }
  }  }
 +
  }  }
- if conta==len(x){ +  
- return true + return ​conta==len(x) 
- } + 
- return ​false+ //return ​true
 } }
 +*/
 +
 +
 +
  
 /* /*
-if valok := mymap["key"]; ok +import ( 
-    //do something here+ "​fmt"​ 
 + "​os"​ 
 +
 + 
 +func main() { 
 + var equals bool = true 
 + var str1, str2 string 
 + 
 + str1, str2 = os.Args[1], os.Args[2] 
 + 
 + occurrencesS1 := map[rune]int{} 
 + occurrencesS2 := map[rune]int{} 
 + 
 + if equals = len(str1) == len(str2); equals { 
 + for indexel := range str1 { 
 + occurrencesS1[el]++ 
 + occurrencesS2[rune(str2[index])]++ 
 +
 + for key, el := range occurrencesS1 { 
 + if equals = equals && el == occurrencesS2[key]; ​!equals ​
 + break 
 +
 +
 +
 + 
 + fmt.Print(str1,​ " == ", str2, " -> ", equals, "​\n"​) 
 +}*/ 
 + 
 + 
 +/
 +package main 
 + 
 +import ("​fmt"​) 
 + 
 + 
 +func main (){ 
 + 
 + var a, b string 
 + 
 + var Car map [rune] int32 
 + Car = make ( map [rune] int32 ) 
 +  
 + fmt.Scan(&​a,​ &b) 
 + 
 + if len(a)!=len(b){ 
 + fmt.Printf("​Falso"​) 
 + return 
 +
 + 
 + for _,​C:​=range(a) { 
 + Car[C]++ 
 + //​fmt.Printf("​%c - %d\n", C, Car[C]) 
 +
 + 
 + //​fmt.Printf("//​\n"​) 
 + 
 + for _,​C:​=range(b) { 
 + Car[C]-- 
 + //​fmt.Printf("​%c - %d\n", C, Car[C]) 
 + if Car[C]<0 { 
 + fmt.Printf("​Falso"​) 
 + return 
 +
 +
 + 
 + //​fmt.Printf("//​\n"​) 
 + 
 + for C,​_:​=range(Car) { 
 + //​fmt.Printf("​%c - %d\n", C, Car[C]) 
 + if Car[C]!=0 { 
 + fmt.Printf("​Falso"​) 
 + return 
 +
 +
 + 
 + fmt.Printf("​Vero"​) 
 } }
 */ */
  
  
-/* 
 package main package main
  
Line 78: Line 182:
     slc := strings.Split(s,​ ""​)     slc := strings.Split(s,​ ""​)
     sort.Strings(slc)     sort.Strings(slc)
-    ​return ​strings.Join(slc,​ ""​)+    ​sortedString := strings.Join(slc,​ ""​) 
 +    fmt.Println("​sorted ->",​ sortedString) 
 +    return sortedString
 } }
  
-*/ 
  
 +/*
 +package main
 +import "​fmt"​
 +func main() {
 + var s1, s2 string
 + var mappaParola1,​ mappaParola2 map[rune]int
 + mappaParola1 = make(map[rune]int)
 + mappaParola2 = make(map[rune]int)
 + fmt.Scan(&​s1,​ &s2)
 + parola1 := []rune(s1)
 + parola2 := []rune(s2)
 + if len(parola1) != len(parola2) {
 + fmt.Println("​Non sono anagrammi!"​)
 + return
 + }
 + for _, elem := range parola1 {
 + mappaParola1[elem]++
 + }
 + for _, elem := range parola2 {
 + mappaParola2[elem]++
 + }
 + var incontrato int
 + for chiave1, valore1 := range mappaParola1 {
 + for chiave2, valore2 := range mappaParola2 {
 + if chiave1 == chiave2 {
 + incontrato++
 + }
 + if chiave1 == chiave2 && valore1 != valore2 {
 + fmt.Println("​Non sono anagrammi"​)
 + return
 + }
 + }
 + if incontrato == 0 {
 + fmt.Println("​Non sono anagrammi!"​)
 + return
 + }
 + }
 + fmt.Println("​Sono anagrammi!"​)
 +}
  
  
 +/*
 +package main
 +import (
 + "​fmt"​
 + "​os"​
 + "​reflect"​
 + )
 +
 +func main(){
 +
 + stringa1:​=os.Args[1]
 + stringa2:​=os.Args[2]
 +
 + if len(stringa1)==len(stringa2){
 + mappas1:​=mappa(stringa1)
 + mappas2:​=mappa(stringa2)
 + eq := reflect.DeepEqual(mappas1,​ mappas2)
 + fmt.Println(eq)
 + } else {
 + fmt.Println("​false"​)
 + }
 +
 +
 +}
 +
 +func mappa(s string)map[rune]int{
 + var ripRune map[rune]int ​
 + ripRune = make(map[rune]int)
 + for _,r := range s{
 + ripRune[r]=ripRune[r]+1
 + }
 + return ripRune
 + }
 +
 +
 +
 +*/
 </​code>​ </​code>​
  
pub/labprog/20181126.txt · Last modified: 2018/12/03 14:02 by lucafavalli
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0