c100bit-nmax 0.2.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +50 -0
- data/.rspec +3 -0
- data/.ruby-version +1 -0
- data/.travis.yml +9 -0
- data/Gemfile +4 -0
- data/LICENSE +21 -0
- data/README.md +12 -0
- data/Rakefile +5 -0
- data/bin/c100bit-nmax +14 -0
- data/c100bit-nmax.gemspec +14 -0
- data/lib/c100bit-nmax.rb +29 -0
- data/spec/fixtures/demo1.txt +8 -0
- data/spec/nmax_spec.rb +30 -0
- data/spec/spec_helper.rb +1 -0
- metadata +61 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: a302ec38c21d95eaf61bf8e21545fd0cac5c9e4f948a84faffa78dfcb36dcbe4
|
4
|
+
data.tar.gz: 34948ffc737c4f5b2d7023d2bba5546a00220b7fe0be0e0a1eec22b1fb76fe60
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 388b0913e94f6c111bd12c13323d8180e7a47f2bf5c8dd9d8f5776cc4c00a0ca32e685990dbbb0a2ac00293556169a5d9125f5c1887abe76bbced2e705514145
|
7
|
+
data.tar.gz: dc98f1fba11093fa52b4f52bb48071b680566af0c530d34f5b7c40ef13ef824d481d51276a2d74775fa04e394f0eaa2acdc38fe28c0e43f69d8d58d578f8789b
|
data/.gitignore
ADDED
@@ -0,0 +1,50 @@
|
|
1
|
+
*.gem
|
2
|
+
*.rbc
|
3
|
+
/.config
|
4
|
+
/coverage/
|
5
|
+
/InstalledFiles
|
6
|
+
/pkg/
|
7
|
+
/spec/reports/
|
8
|
+
/spec/examples.txt
|
9
|
+
/test/tmp/
|
10
|
+
/test/version_tmp/
|
11
|
+
/tmp/
|
12
|
+
|
13
|
+
# Used by dotenv library to load environment variables.
|
14
|
+
# .env
|
15
|
+
|
16
|
+
## Specific to RubyMotion:
|
17
|
+
.dat*
|
18
|
+
.repl_history
|
19
|
+
build/
|
20
|
+
*.bridgesupport
|
21
|
+
build-iPhoneOS/
|
22
|
+
build-iPhoneSimulator/
|
23
|
+
|
24
|
+
## Specific to RubyMotion (use of CocoaPods):
|
25
|
+
#
|
26
|
+
# We recommend against adding the Pods directory to your .gitignore. However
|
27
|
+
# you should judge for yourself, the pros and cons are mentioned at:
|
28
|
+
# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
|
29
|
+
#
|
30
|
+
# vendor/Pods/
|
31
|
+
|
32
|
+
## Documentation cache and generated files:
|
33
|
+
/.yardoc/
|
34
|
+
/_yardoc/
|
35
|
+
/doc/
|
36
|
+
/rdoc/
|
37
|
+
|
38
|
+
## Environment normalization:
|
39
|
+
/.bundle/
|
40
|
+
/vendor/bundle
|
41
|
+
/lib/bundler/man/
|
42
|
+
|
43
|
+
# for a library or gem, you might want to ignore these files since the code is
|
44
|
+
# intended to run in multiple environments; otherwise, check them in:
|
45
|
+
Gemfile.lock
|
46
|
+
# .ruby-version
|
47
|
+
# .ruby-gemset
|
48
|
+
|
49
|
+
# unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
|
50
|
+
.rvmrc
|
data/.rspec
ADDED
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
2.6.3
|
data/.travis.yml
ADDED
@@ -0,0 +1,9 @@
|
|
1
|
+
language: ruby
|
2
|
+
dist: trusty
|
3
|
+
deploy:
|
4
|
+
provider: rubygems
|
5
|
+
gem: c100bit-nmax
|
6
|
+
on:
|
7
|
+
repo: c100bit/nmax
|
8
|
+
api_key:
|
9
|
+
secure: ezF5RRcpYFuDrbU0Kf3jSokQJ4rQ5dL4le92u7x0LeX+fObM+PkR4qIkm2zPwfo2xeRQEGcWZVvkhagFCngI7zOHh9zqFKJLszxBaVIqn50HfMLUHKUBdj4/FK3lJjqd7BWMui85JjPktdyUQJkDwmM30IWQ3cTjBOgTWo3LRuykmEbWGN56Wdg8nJ/KSO9XrvsqvKpL2n4ThnwEq+V+41NzQMs0YtBnJKUbal1oPpb2AzRNSaD7yhEgMtcrDCH+YsR7y/qSFR01bJBzhCKqUna3yhHb+EPgo+rUTkGvEwDdREnq2ZNuvIlb3RJwatRUbqeOWdZHS1w8VZfsmVPUC1lS6Y5GC7qay+CGM9Z0hDUNflfRfDmLFP23fLc461e4dUkY65Mpr+xwnYidP434ouYcw5oE/hlThIJcX1PVDzWFG3L2B8Fm49Soa6yieic79vKvrGCoLmktYRmwCGm9bx9S70iwWAynjcidKXvh0JA04T0eHFe6Tgv88LEjlzbz3w5El8OHExNWQGTZZ0uWY0B1QCKU1VsOQ/qZyabeaxbIG6MK918alEaL7d2z6vjNG9ekDrv5mqelG6cXQJeEafcSgUtUCvO9NdegqML/BfhFsF9zuiHapcSGldhRXqYZYvWuNdFgCnv3S+ljlG7eknEzKzuqrDCDEVfdcjOxf2c=
|
data/Gemfile
ADDED
data/LICENSE
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
MIT License
|
2
|
+
|
3
|
+
Copyright (c) 2018
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
13
|
+
copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
SOFTWARE.
|
data/README.md
ADDED
data/Rakefile
ADDED
data/bin/c100bit-nmax
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
Gem::Specification.new do |spec|
|
2
|
+
spec.authors = ["c100bit"]
|
3
|
+
spec.email = ["c100bit@gmail.com"]
|
4
|
+
spec.description = %q{Find top numbers}
|
5
|
+
spec.summary = ""
|
6
|
+
spec.homepage = ""
|
7
|
+
spec.license = 'MIT'
|
8
|
+
spec.files = `git ls-files`.split($\)
|
9
|
+
spec.executables = spec.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
10
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
11
|
+
spec.name = "c100bit-nmax"
|
12
|
+
spec.require_paths = ["lib"]
|
13
|
+
spec.version = '0.2.2'
|
14
|
+
end
|
data/lib/c100bit-nmax.rb
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'set'
|
2
|
+
|
3
|
+
class Nmax
|
4
|
+
MAX_LENGTH = 1000
|
5
|
+
|
6
|
+
def initialize
|
7
|
+
@s = Set.new
|
8
|
+
end
|
9
|
+
|
10
|
+
def add_numbers_from str
|
11
|
+
@s.merge str.scan(/\d{1,#{MAX_LENGTH}}/).map(&:to_i)
|
12
|
+
end
|
13
|
+
|
14
|
+
def top n = nil
|
15
|
+
n ||= @s.size
|
16
|
+
@s.sort { |a, b| b <=> a } [0..n-1]
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
def _size
|
22
|
+
@s.size
|
23
|
+
end
|
24
|
+
|
25
|
+
def _max
|
26
|
+
top.first
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
@@ -0,0 +1,8 @@
|
|
1
|
+
Lorem 1, 2, 3, ipsum dolor sit amet, consectetur adipiscing elit. Donec vitae eros ultrices nibh efficitur suscipit sit amet non erat. Proin ac nisl id lorem placerat vulputate. Ut eleifend leo vel magna dignissim, at ornare dolor condimentum. Sed ullamcorper eleifend tellus, in molestie ante lobortis vel. Sed ac lacus id magna lobortis dictum. Praesent posuere sem quis velit consequat, in dapibus elit malesuada. Duis interdum lorem a elementum consectetur. Nunc id lorem cursus, laoreet mauris eget, consectetur nisl.
|
2
|
+
|
3
|
+
102, 103, 4 Fusce vel risuseu velit tristique ultrices a consectetur libero. Phasellus posuere at ante eu placerat. Proin mi neque, eleifend a vulputate id, lobortis id tortor. Sed ac tellus maximus, ultricies sem sed, lobortis sapien. Integer dictum libero non nulla accumsan facilisis sed id enim. Phasellus gravida, turpis ac venenatis faucibus, lorem metus porta magna, sed tempus eros mi ac tellus. Ut a libero in eros dictum lacinia eu a turpis. Ut sed lobortis urna, at tempus enim. Etiam risus mi, fermentum sed diam non, pretium efficitur augue.
|
4
|
+
|
5
|
+
Donec posuere sit amet leo at egestas. Mauris in dignissim odio. Phasellus pharetra, lectus eget varius laoreet, libero velit eleifend orci, in dignissim risus eros eu ex. Integer suscipit iaculis libero, vitae euismod arcu ultricies non. Nunc metus nisl, volutpat eget erat at, varius vulputate diam. Nullam nec diam scelerisque, placerat erat a, bibendum purus. Suspendisse mattis laoreet nibh in tristique. Pellentesque finibus auctor dolor a sollicitudin. Fusce nibh lectus, imperdiet eget sodales in, eleifend finibus nisl. Suspendisse enim neque, pellentesque ut pharetra ac, tincidunt sit amet leo. Proin iaculis non orci et hendrerit.
|
6
|
+
|
7
|
+
Nunc luctus,1000, 10000;30000 dui id lacinia rutrum, est odio egestas purus, et dapibus dui odio in felis. Donec ullamcorper imperdiet urna. Duis dignissim ac enim sit amet tincidunt. Nam elementum elit eget lobortis vestibulum. Aliquam accumsan, elit tristique lacinia cursus, quam sapien auctor turpis, pretium fermentum sapien risus nec erat. Praesent non auctor justo, nec vulputate mauris. Sed mollis, ex quis eleifend convallis, dolor ligula pretium nulla, non dictum eros elit id tellus. Curabitur in dapibus elit. Praesent pharetra accumsan bibendum. Proin fermentum metus in malesuada semper. Ut aliquet velit nulla, a laoreet lectus suscipit at. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Donec risus velit, condimentum pulvinar lectus sit amet, blandit iaculis metus.
|
8
|
+
Proin ante neque, dictum sed velit nec, sollicitudin mattis lacus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nunc gravida vehicula porta. Nunc ultrices tincidunt risus, ut viverra leo dapibus eu. Cras aliquet sit amet mi sit amet varius. Nam sit amet est tincidunt, vehicula nibh ac, cursus arcu. Nulla at fringilla purus. Nullam enim mi, egestas non tellus eget, fringilla auctor ligula. Interdum et malesuada fames ac ante ipsum primis in faucibus. Nunc quis malesuada metus.
|
data/spec/nmax_spec.rb
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
describe Nmax do
|
2
|
+
let(:text) { File.read('spec/fixtures/demo1.txt') }
|
3
|
+
|
4
|
+
describe '#add_numbers_from' do
|
5
|
+
it 'parses all numbers' do
|
6
|
+
subject.add_numbers_from text
|
7
|
+
expect(subject.send :_size).to eq(9)
|
8
|
+
end
|
9
|
+
|
10
|
+
it 'parses digits up to 1000' do
|
11
|
+
str = "1" * 9000
|
12
|
+
subject.add_numbers_from str
|
13
|
+
expect(subject.send(:_max).digits.count).to eq 1000
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
describe '#top' do
|
18
|
+
before { subject.add_numbers_from text }
|
19
|
+
|
20
|
+
it 'returns top N' do
|
21
|
+
expect(subject.top(5).count).to eq(5)
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'returns expected array' do
|
25
|
+
expected_array = [30000, 10000, 1000, 103, 102, 4, 3, 2, 1]
|
26
|
+
expect(subject.top).to eq expected_array
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require 'c100bit-nmax'
|
metadata
ADDED
@@ -0,0 +1,61 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: c100bit-nmax
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.2.2
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- c100bit
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2019-10-13 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description: Find top numbers
|
14
|
+
email:
|
15
|
+
- c100bit@gmail.com
|
16
|
+
executables:
|
17
|
+
- c100bit-nmax
|
18
|
+
extensions: []
|
19
|
+
extra_rdoc_files: []
|
20
|
+
files:
|
21
|
+
- ".gitignore"
|
22
|
+
- ".rspec"
|
23
|
+
- ".ruby-version"
|
24
|
+
- ".travis.yml"
|
25
|
+
- Gemfile
|
26
|
+
- LICENSE
|
27
|
+
- README.md
|
28
|
+
- Rakefile
|
29
|
+
- bin/c100bit-nmax
|
30
|
+
- c100bit-nmax.gemspec
|
31
|
+
- lib/c100bit-nmax.rb
|
32
|
+
- spec/fixtures/demo1.txt
|
33
|
+
- spec/nmax_spec.rb
|
34
|
+
- spec/spec_helper.rb
|
35
|
+
homepage: ''
|
36
|
+
licenses:
|
37
|
+
- MIT
|
38
|
+
metadata: {}
|
39
|
+
post_install_message:
|
40
|
+
rdoc_options: []
|
41
|
+
require_paths:
|
42
|
+
- lib
|
43
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
49
|
+
requirements:
|
50
|
+
- - ">="
|
51
|
+
- !ruby/object:Gem::Version
|
52
|
+
version: '0'
|
53
|
+
requirements: []
|
54
|
+
rubygems_version: 3.0.6
|
55
|
+
signing_key:
|
56
|
+
specification_version: 4
|
57
|
+
summary: ''
|
58
|
+
test_files:
|
59
|
+
- spec/fixtures/demo1.txt
|
60
|
+
- spec/nmax_spec.rb
|
61
|
+
- spec/spec_helper.rb
|