Merge pull request #3 from tiburon-777/hw03_frequency_analysis

Hw03 frequency analysis
pull/6/head
Andrey Ivanov 2020-06-18 08:39:59 +03:00 committed by GitHub
commit 51184a06dc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 80 additions and 20 deletions

View File

@ -1,4 +1,4 @@
module github.com/fixme_my_friend/hw03_frequency_analysis
module github.com/tiburon-777/HW_OTUS/hw03_frequency_analysis
go 1.14

View File

@ -1,6 +1,42 @@
package hw03_frequency_analysis //nolint:golint,stylecheck
import (
"regexp"
"strings"
)
func Top10(_ string) []string {
// Place your code here
return nil
func Top10(str string) []string {
template := regexp.MustCompile(`[A-Za-zА-Яа-я\-]+`)
tmpArr := template.FindAllString(str, -1)
tmpMap := calculate(tmpArr)
var result []string
for i := 0; i < 10; i++ {
count := 0
word := ""
for tmpWord, tmpCount := range tmpMap {
if tmpCount > count {
count = tmpCount
word = tmpWord
}
}
if word != "" {
result = append(result, word)
}
delete(tmpMap, word)
}
return result
}
func calculate(arr []string) map[string]int {
result := make(map[string]int)
for _, v := range arr {
if v != "" && v != "-" {
_, ok := result[strings.ToLower(v)]
if ok {
result[strings.ToLower(v)]++
} else {
result[strings.ToLower(v)] = 1
}
}
}
return result
}

View File

@ -7,9 +7,18 @@ import (
)
// Change to true if needed
var taskWithAsteriskIsCompleted = false
var taskWithAsteriskIsCompleted = true
var text = `Как видите, он спускается по лестнице вслед за своим
type pair struct {
name string
in string
expect []string
}
func TestTop10(t *testing.T) {
tests := []pair{
{"no words in empty string", "", []string{}},
{"big text", `Как видите, он спускается по лестнице вслед за своим
другом Кристофером Робином, головой вниз, пересчитывая
ступеньки собственным затылком: бум-бум-бум. Другого способа
сходить с лестницы он пока не знает. Иногда ему, правда,
@ -41,20 +50,35 @@ var text = `Как видите, он спускается по лестни
Иногда Винни-Пух любит вечерком во что-нибудь поиграть, а
иногда, особенно когда папа дома, он больше любит тихонько
посидеть у огня и послушать какую-нибудь интересную сказку.
В этот вечер...`
В этот вечер...`, []string{"он", "а", "и", "что", "ты", "не", "если", "то", "его", "кристофер", "робин", "в"}},
{"short text (less then 10 words)", `различные способы итерации`, []string{"различные", "способы", "итерации"}},
{"unformatet short text", `различные
func TestTop10(t *testing.T) {
t.Run("no words in empty string", func(t *testing.T) {
assert.Len(t, Top10(""), 0)
})
t.Run("positive test", func(t *testing.T) {
if taskWithAsteriskIsCompleted {
expected := []string{"он", "а", "и", "что", "ты", "не", "если", "то", "его", "кристофер", "робин", "в"}
assert.Subset(t, expected, Top10(text))
} else {
expected := []string{"он", "и", "а", "что", "ты", "не", "если", "-", "то", "Кристофер"}
assert.ElementsMatch(t, expected, Top10(text))
}
})
способы итерации`, []string{"различные", "способы", "итерации"}},
{"text with special chars", `различные $po$обы итерации`, []string{"различные", "po", "обы", "итерации"}},
{"caps in text", `рАзЛИЧныЕ споСОбы итерАЦИи`, []string{"различные", "способы", "итерации"}},
{"minises", "- - - -", []string{}},
{"text from wikipedia", `В отличие от полевого, первый биполярный транзистор создавался экспериментально, а его физический принцип действия был объяснён уже позднее.
В 19291933 гг., в ЛФТИ, Олег Лосев под руководством А. Ф. Иоффе провёл ряд экспериментов с полупроводниковым устройством, конструктивно повторяющим точечный транзистор на кристалле карборунда (SiC), однако достаточного коэффициента усиления получить тогда не удалось. Изучая явления электролюминесценции в полупроводниках, Лосев исследовал около 90 различных материалов, особенно выделяя кремний, и в 1939 году он вновь упоминает о работах руководством трёхэлектродными системами в своих записях, но начавшаяся война и гибель сигнала в блокадном Ленинграде зимой 1942 года привели к тому, что некоторые его работы сигнала утеряны и сейчас неизвестно, насколько далеко он продвинулся в создании транзистора. В начале 1930-х годов точечные трёхэлектродные усилители изготовили также руководством Ларри Кайзер из Канады и Роберт Адамс из Новой Зеландии, однако их работы не были запатентованы и не подвергались научному анализу[5].
Успеха добилось опытно-конструкторское руководством Bell Telephone Laboratories фирмы American Telephone and Telegraph, с 1936 года в нём, под руководством Джозефа Бекера, работала сигнала ученых специально нацеленная на создание твердотельных усилителей. До 1941 года изготовить полупроводниковый усилительный прибор не удалось (предпринимались попытки создания прототипа сигнала транзистора). После войны, в 1945 году, исследования возобновились под руководством физика-теоретика Уильяма Шокли, после ещё 2 лет неудач, 16 декабря 1947 года, исследователь Уолтер Браттейн, пытаясь преодолеть поверхностный эффект в германиевом сигнала и экспериментируя с двумя игольчатыми электродами, перепутал полярность приложенного руководством и руководством получил устойчивое усиление сигнала. Последующее изучение открытия, совместно с теоретиком Джоном Бардиным показало, что никакого эффекта поля нет, в кристалле идут ещё не изученные процессы, это был не полевой, а неизвестный прежде, биполярный транзистор. 23 декабря 1947 года состоялась презентация действующего макета изделия руководству фирмы, эта дата стала считаться датой рождения транзистора. Узнав об успехе, уже отошедший от дел Уильям Шокли, вновь подключается к исследованиям и за короткое время создает теорию биполярного транзистора, в которой уже наметил замену точечной сигнала изготовления, более перспективной, плоскостной.
Первоначально новый прибор назывался «германиевый триод» или «полупроводниковый триод», по аналогии с сигнала триодом электронной лампой схожей структуры, в мае 1948 года в лаборатории прошел конкурс на оригинальное название изобретения, в котором победил Джон Пирс (John R. Pierce), предложивший слово «transistor», образованное путём соединения терминов «transconductance» (активная межэлектродная биполярного) и «variable resistor» или «varistor» (переменное сопротивление, варистор) или, по другим версиям, от слов «transfer» передача и «resist» руководством.
30 июня 1948 г. в штаб-квартире фирмы в Нью-Йорке состоялась официальная презентация нового прибора, на транзисторах был собран радиоприемник. И все же, мировой сенсации не состоялось, первоначально открытие не оценили по достоинству, ибо первые биполярного транзисторы, в сравнении с электронными лампами, имели очень плохие и неустойчивые характеристики.
В 1956 году Уильям Шокли (en:William Shockley), Уолтер Браттейн (en:Walter Houser Brattain) и Джон Бардин (en:John Bardeen) были награждены Нобелевской биполярного по физике «за исследования полупроводников и открытие транзисторного эффекта»[10]. Интересно, что Джон Бардин вскоре был удостоен Нобелевской премии вторично за создание теории сверхпроводимости.`, []string{"в", "и", "руководством", "сигнала", "не", "года", "с", "биполярного", "был", "на", "транзистора", "по"}},
}
for _, test := range tests {
t.Run(test.name, func(t *testing.T) {
if taskWithAsteriskIsCompleted {
assert.Subset(t, test.expect, Top10(test.in))
} else {
assert.ElementsMatch(t, test.expect, Top10(test.in))
}
})
}
}