Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save SohanChy/4518a3651c3c017aeda3da08560927cb to your computer and use it in GitHub Desktop.
Save SohanChy/4518a3651c3c017aeda3da08560927cb to your computer and use it in GitHub Desktop.
My answers for tests on http://codility.com that I passed for company http://toptal.com I use Python language to solve problems.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
# Test that I passed on codility.com for TopTal company
#
# Task #1
def binary_gap(N):
'''
A binary gap within a positive integer N is any maximal
sequence of consecutive zeros that is surrounded by ones
at both ends in the binary representation of N.
Args:
- N: integer within the range [1..2,147,483,647]
'''
bin_representation = bin(N)[2:]
max_gap = 0
gap_counter = 0
gap_started = False
for symbol in bin_representation:
if symbol == '1':
if gap_counter > max_gap:
max_gap = gap_counter
gap_counter = 0
gap_started = True
elif gap_started:
gap_counter += 1
return max_gap
print binary_gap(1041)
# Task #2
def count_div(A, B, K):
'''
Returns the number of integers within the range [A..B] that are divisible by K.
Used generators to save memory on large amounts of data.
Args:
- A: is an integer within the range [0..2,000,000,000]
- B: is an integer within the range [0..2,000,000,000] and A <= B
- K: is an integer within the range [1..2,000,000,000]
'''
divs_count = 0
for x in xrange(A, B + 1):
if (x % K) == 0:
divs_count += 1
return divs_count
print count_div(1, 200000000, 1000)
# Task #3
def triangle(A):
'''
Calculate triangel of integers, where sentense of numbers P, Q, R
correspond to next rules:
- P + Q > R
- Q + R > P
- R + P > Q
Args:
- A: list of integers, where we will search triangle
Return: 1 - if triangle exists, and 0 - otherwise
'''
A = tuple(enumerate(A))
for p, P in A:
for q, Q in A[p + 1:]:
for r, R in A[q + 1:]:
if (P + Q > R) and (Q + R > P) and (R + P > Q):
return 1
return 0
print triangle([10, 2, 5, 1, 8, 20])
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment