Last active
May 19, 2022 19:58
-
-
Save 1st/5278729 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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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]) |
for task 3 another java imp
class Solution {
public int solution(int[] A) {
Arrays.sort(A);
for (int i = 0; i < A.length-2; i++) {
long i1 = A[i];
long i2 = A[i+1];
long i3 = A[i+2];
if((i1+i2>i3 && i2+i3>i1 && i3+i1>i2))
return 1;
}
return 0;
}
}
These are the training question company asked the same questions which are provided in the traininng course of the codility website
my code for big binary gap
def DecimalToBinary(num):
S = bin(num).replace("0b", "")
res = [int(x) for x in str(S)]
print(res)
if res.count(1) < 2 or res.count(0) < 1:
print("its has no binary gap")
else:
positionof1 = [i for i,x in enumerate(res) if x==1]
print(positionof1)
differnce = [abs(j-i) for i,j in zip(positionof1, positionof1[1:])]
differnce[:] = [differnce - 1 for differnce in differnce]
differnce.sort()
print(differnce[-1])
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Are you sure this was the toptal test and not you just practising the lessons. Mine was much more harder than this with optimal solutions involving dynamic programming.