1
1
mirror of https://github.com/theoludwig/programming-challenges.git synced 2025-05-18 12:02:53 +02:00

feat: rewrite programming-challenges CLI (#3)

This commit is contained in:
Divlo
2021-06-09 20:31:45 +02:00
committed by GitHub
parent 7aa12f313e
commit 677a55a9d8
256 changed files with 16829 additions and 1881 deletions

View File

@ -1,5 +0,0 @@
# typescript-defibrilators - defibrillators
Programming language : TypeScript
Created by [@Divlo](https://github.com/Divlo) on 18 February 2021.

View File

@ -1,67 +0,0 @@
function convertStringToFloat(string: string): number {
return parseFloat(string.replace(',', '.'))
}
class Position {
public longitude: number
public latitude: number
constructor(longitude: number, latitude: number) {
this.longitude = this.convertDegreesToRadian(longitude)
this.latitude = this.convertDegreesToRadian(latitude)
}
static distance(pointA: Position, pointB: Position): number {
const x =
(pointB.longitude - pointA.longitude) *
Math.cos((pointA.latitude + pointB.latitude) / 2)
const y = pointB.latitude - pointA.latitude
return Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)) * 6371
}
private convertDegreesToRadian(degrees: number): number {
return degrees * (Math.PI / 180)
}
}
class Defibrillator {
public id: string
public name: string
public address: string
public position: Position
public distance: number
constructor(array: string[], userPosition: Position) {
this.id = array[0]
this.name = array[1]
this.address = array[2]
this.position = new Position(
convertStringToFloat(array[array.length - 2]),
convertStringToFloat(array[array.length - 1])
)
this.distance = Position.distance(this.position, userPosition)
}
}
function solution(
longitudeInput: string,
latitudeInput: string,
defibrillatorsInput: string[]
): string {
const longitude = convertStringToFloat(longitudeInput)
const latitude = convertStringToFloat(latitudeInput)
const userPosition = new Position(longitude, latitude)
const defibrillators = defibrillatorsInput.map((currentLine) => {
const line = currentLine.split(';;').join(';')
return new Defibrillator(line.split(';'), userPosition)
})
let defibrillatorResult = defibrillators[0]
for (let index = 1; index < defibrillators.length; index++) {
if (defibrillatorResult.distance > defibrillators[index].distance) {
defibrillatorResult = defibrillators[index]
}
}
return defibrillatorResult.name
}
export default solution