# Untitled

unknown
python
a year ago
2.4 kB
1
Indexable
Never
```#1
def to_hex_string(data):
ans=''
for i in data:
if  int(i) < 10:
ans+=str(i)
elif int(i) ==10:
ans+='a'
elif int(i) ==11:
ans+='b'
elif int(i) ==12:
ans+='c'
elif int(i) ==13:
ans+='d'
elif int(i) ==14:
ans+='e'
elif int(i) ==15:
ans+='f'
else:
ans+=''
return ans

print(to_hex_string([3, 15, 6, 4]))

#2
def count_runs(flat_data):
runs={}

for i in flat_data:
if i in runs:
runs[i] = runs[i]+ 1
else:
runs[i] = 1
return len(runs)

print(count_runs([15, 15, 15, 4, 4, 4, 4, 4, 4]))

#3
def encode_rle(flat_data):
l=len(flat_data)
i=0
count=0
res=[]

while i<l:
curr=flat_data[i]
res.extend( [flat_data.count(curr),curr] )
i+= flat_data.count(curr)

print(res)

#3.1
encode_rle([15, 15, 15, 4, 4, 4, 4, 4, 4])

def encode_rle2(flat_data):
l=len(flat_data)
result=[]
i=0
while i<l:
curr=flat_data[i]
count=0
j=i
while j<l and flat_data[i] == flat_data[j] :
count+=1
j+=1

result.extend([count, curr ])
i+=count

return result

print(encode_rle2([15, 15, 15, 4, 4, 4, 4, 4, 4]))

#4
def get_decoded_length(rle_data):
length=0
for i in range(0, len(rle_data), 2):
length+= rle_data[i]
return length

print(get_decoded_length([3, 15, 6, 4]))

#5
def decode_rle(rle_data):
result=[]

for i in range(0, len(rle_data), 2):
result.extend( [rle_data[i+1]] * rle_data[i] )

return result

print(decode_rle([3, 15, 6, 4]))

#6
def string_to_data(data_string):
result=[]

for i in data_string:
if 48 <= ord(i) <= 57:
result.append(int(i))
elif i=='a' or i=='A':
result.append(10)
elif i=='b' or i=='B':
result.append(11)
elif i=='c' or i=='C':
result.append(12)
elif i=='d' or i=='D':
result.append(13)
elif i=='e' or i=='E':
result.append(14)
elif i=='f' or i=='F':
result.append(15)

return result

print(string_to_data ("3f64"))

```