I AM USING THE IDE JES TO COMPILE THE CODE BECAUSE WE ARE REQUIRED TO DO SO. PLE
ID: 3593253 • Letter: I
Question
I AM USING THE IDE JES TO COMPILE THE CODE BECAUSE WE ARE REQUIRED TO DO SO. PLEASE HELP FIX THE ERROR IN THIS CODE THAT IS CAUSING A SYNTAX ERROR WHEN I COMPILE.....THE PROBLEM IS IN THIS FUNCTION TOWARDS THE MIDDLE OF THE CODE CALLED * def print_abs_list(arr):*
import time
import math
from operator import itemgetter
from itertools import permutations
def is_mobile(i,arr):
if i < 0 or i > len(arr)-1:
return False
if i == 0 and arr[i]<0:
return False
elif i == len(arr)-1 and arr[i] > 0:
return False
elif arr[i] < 0:
if abs(arr[i]) < abs(arr[i-1]):
return False
elif arr[i] > 0:
if abs(arr[i]) < abs(arr[i+1]):
return False
return True
def is_any_mobile(arr):
val = False
for i in range(len(arr)):
val = val or is_mobile(i,arr)
return val
def max_mobile(arr):
max_mobile_index = None
for i in range(len(arr)):
if is_mobile(i,arr):
if max_mobile_index is None:
max_mobile_index = i
elif abs(arr[i]) > abs(arr[max_mobile_index]):
max_mobile_index = i
return max_mobile_index
def print_abs_list(arr):
for i in arr: # I AM GETTING THE FOLLOWING ERROR WHEN I COMPILE Invalid syntax.Your code contains at least one syntax error, meaning it is not legal Jython. FOR THE FOLLOWING LINE OF CODE WITHIN THIS print_abs_list(arr) function, PLEASE FIX
print (abs(i),end=" ")
print("")
def swap_and_change_sign(index,arr):
if index<0 or index > len(arr)-1:
return
if arr[index] < 0:
# swap with the left one
k = arr[index]
arr[index] = arr[index-1]
arr[index-1] = k
for i in range(len(arr)):
if abs(arr[i]) > abs(k):
arr[i] = -1*arr[i]
else:
# swap with the right one
k = arr[index]
arr[index] = arr[index + 1]
arr[index + 1] = k
for i in range(len(arr)):
if abs(arr[i]) > abs(k):
arr[i] = -1 * arr[i]
def JohnsonTrotter(n):
vals = []
for i in range(n):
vals.append(-(i+1))
print_abs_list(vals)
while is_any_mobile(vals):
max_mob_index = max_mobile(vals)
swap_and_change_sign(max_mob_index,vals)
print_abs_list(vals)
Explanation / Answer
import time
import math
from operator import itemgetter
from itertools import permutations
def is_mobile(i,arr):
if i < 0 or i > len(arr)-1:
return False
if i == 0 and arr[i]<0:
return False
elif i == len(arr)-1 and arr[i] > 0:
return False
elif arr[i] < 0:
if abs(arr[i]) < abs(arr[i-1]):
return False
elif arr[i] > 0:
if abs(arr[i]) < abs(arr[i+1]):
return False
return True
def is_any_mobile(arr):
val = False
for i in range(len(arr)):
val = val or is_mobile(i,arr)
return val
def max_mobile(arr):
max_mobile_index = None
for i in range(len(arr)):
if is_mobile(i,arr):
if max_mobile_index is None:
max_mobile_index = i
elif abs(arr[i]) > abs(arr[max_mobile_index]):
max_mobile_index = i
return max_mobile_index
def print_abs_list(arr):
abs_arr = [str(abs(i)) for i in arr]
print " ".join(abs_arr)
print("")
def swap_and_change_sign(index,arr):
if index<0 or index > len(arr)-1:
return
if arr[index] < 0:
# swap with the left one
k = arr[index]
arr[index] = arr[index-1]
arr[index-1] = k
for i in range(len(arr)):
if abs(arr[i]) > abs(k):
arr[i] = -1*arr[i]
else:
# swap with the right one
k = arr[index]
arr[index] = arr[index + 1]
arr[index + 1] = k
for i in range(len(arr)):
if abs(arr[i]) > abs(k):
arr[i] = -1 * arr[i]
def JohnsonTrotter(n):
vals = []
for i in range(n):
vals.append(-(i+1))
print_abs_list(vals)
while is_any_mobile(vals):
max_mob_index = max_mobile(vals)
swap_and_change_sign(max_mob_index,vals)
print_abs_list(vals)
# copypastable code link: https://paste.ee/p/n4Ygk
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.