Napisz ten sam program w innym języku od poprzedniego

Napisz ten sam program w innym języku od poprzedniego
SH
  • Rejestracja:około 2 lata
  • Ostatnio:około 2 lata
  • Postów:3
0

Znajdź najmniejszą i największą liczbę! Ruby 3.2 YJIT WebAssembly. Warto też dopisać wersję języka i kompilatora/interpretera w którym dany program został skompilowany i uruchomiony.

Kopiuj
# create a method that finds the minimum value passed into it
def find_min(*args) # allows me to pass in any amount of arguments
  min_num = args[0]
  args.each do |number|
    if number < min_num
      min_num = number
    end
  end
  min_num
end

puts(find_min(1, 5, -3, 6, 8, 0, -10, 121, 3, 4, 4, 5))

# create a method that finds the maximum value passed into it
def find_max(*args) # allows me to pass in any amount of arguments
  max_num = args[0]
  args.each do |number|
    if number > max_num
      max_num = number
    end
  end
  max_num
end

puts(find_max(1, 5, -3, 6, 8, 0, -10, 121, 3, 4, 4, 5))

edytowany 4x, ostatnio: Riddle
WL
  • Rejestracja:około 21 lat
  • Ostatnio:7 dni
  • Postów:1083
0

Chat-GPT zamknęli?
A nie czekaj, działa dalej - no to:

Kopiuj
// W języku Go program wyglądałby tak:
sdsd
package main

import (
	"fmt"
)

func findMin(numbers ...int) int {
	minNum := numbers[0]
	for _, number := range numbers {
		if number < minNum {
			minNum = number
		}
	}
	return minNum
}

func findMax(numbers ...int) int {
	maxNum := numbers[0]
	for _, number := range numbers {
		if number > maxNum {
			maxNum = number
		}
	}
	return maxNum
}

func main() {
	fmt.Println(findMin(1, 5, -3, 6, 8, 0, -10, 121, 3, 4, 4, 5))
	fmt.Println(findMax(1, 5, -3, 6, 8, 0, -10, 121, 3, 4, 4, 5))
}
Spearhead
  • Rejestracja:prawie 6 lat
  • Ostatnio:około godziny
  • Postów:1002
4
Kopiuj
#include <algorithm>
#include <iostream>

int main() {
    auto [min, max] = std::minmax({1, 5, -3, 6, 8, 0, -10, 121, 3, 4, 4, 5});
    std::cout << min << ", " << max << "\n";
}
LukeJL
  • Rejestracja:około 11 lat
  • Ostatnio:3 minuty
  • Postów:8422
0

JS:

Kopiuj
const a = [1, 5, -3, 6, 8, 0, -10, 121, 3, 4, 4, 5]
console.log("min =", a.reduce((a,b)=>Math.min(a, b)));
console.log("max =", a.reduce((a,b)=>Math.max(a, b)));

edytowany 2x, ostatnio: LukeJL
Zobacz pozostałe 2 komentarze
Marooned
No tak, przy większych tablicach masz rację. Ostatnio w projekcie usuwaliśmy wszelkie reduce, bo okazały się parokrotnie wolniejsze od odpowiadających im for :(
LukeJL
no to też dodatkowy czynnik, chociaż tak naprawdę niczego nie można być pewnym pod kątem wydajności, zanim się nie sprawdzi tego w praktyce. Dzisiaj mam rozkminę, że iteracja w Rust (moduł w Wasm) po dwóch tablicach była podobnej szybkości co JS (czyli niby Wasm, a nic nie dało), natomiast jak zmieniłem sposób iteracji i zamiast iterować po liczbie i, to użyłem .iter() oraz .zip() to dopiero przyśpieszyło. Ale jeszcze będę weryfikował, czy naprawdę tak jest. Więc ten WebAssembly miał tyle dawać pod kątem wydajności,a póki co tyle daje, że trzeba dodatkowe benchmarki robić
LukeJL
chociaż to też wskazówka dla tych, którzy chcą używać WebAssembly - że to nie jest magiczna maszynka do przyśpieszania, a coś, co tylko ma potencjał bycia szybszym od JSa, o ile się odpowiednio to zaprogramuje.
Marooned
WA to nadal dla mnie niezbadane rejony, o których generalnie nic nie wiem, ale obstawiam, że póki w pracy nie będę potrzebował (a się nie zanosi), to pozostanę w niewiedzy.
LukeJL
Widze WA, mysle Worms Armageddon.
SH
  • Rejestracja:około 2 lata
  • Ostatnio:około 2 lata
  • Postów:3
0

Java 19.0.1 OpenJDK

Kopiuj
public class Main
{
	public static void main(String[] args) {
		
        int [] arr = new int [] {1, 5, -3, 6, 8, 0, -10, 121, 3, 4, 4, 5};  
 
        int min = arr[0]; 
        int max = arr[0]; 
 
        for (int i = 0; i < arr.length; i++) {  
 
            if(arr[i] < min)  
               min = arr[i]; 
 
            if(arr[i] > max)  
               max = arr[i]; 
        }
 
        System.out.println("Min element in the array: " + min);
 
        System.out.println("Max element in the array: " + max);
    }  
	
}
opiszon
A wygląda jak dowolną wersja Javy :-P
opiszon
Nie da się tak daleko. Tylko nowsze niż 1.0.2 https://stackoverflow.com/a/54633800
opiszon
  • Rejestracja:prawie 3 lata
  • Ostatnio:około 2 godziny
  • Postów:780
0

@sheepard: skompilowane do targetu 1.1 - działa :-P

screenshot-20230201184814.png

edytowany 2x, ostatnio: opiszon
Riddle
Administrator
  • Rejestracja:prawie 15 lat
  • Ostatnio:około godziny
  • Lokalizacja:Laska, z Polski
  • Postów:10073
1
sheepard napisał(a):

Znajdź najmniejszą i największą liczbę! Ruby 3.2 YJIT WebAssembly. Warto też dopisać wersję języka i kompilatora/interpretera w którym dany program został skompilowany i uruchomiony.
[...]

Clojure, 1.8.0

Kopiuj
(ns org.Riddle
	(:gen-class))

(def array [10, 2, 3, 1, 20])
(println
    (apply max array))
(println
    (apply min array))

Za łatwy program wybrałeś, bo większość języków ma metody min i max w bibliotece standardowej.

edytowany 5x, ostatnio: Riddle
LukeJL
trochę jak te zadania na Leetcode, gdzie w statsach najlepsze wyniki wydajnościowe miały programy, gdzie ktoś użył właśnie biblioteki standardowej zamiast pisać algorytm od zera (co nie musi być zawsze prawdą oczywiście. Ale tak było, nie zmyślam).
SA
Leetcode'owe perf testy to shit, przynajmniej w .NET, jak chce dostać boosta kilkadziesiąt procent to wystarczy w kółko wysyłać to samo, totalny random.
SZ
  • Rejestracja:ponad 14 lat
  • Ostatnio:14 minut
  • Postów:181
0

Python 3.11

Kopiuj
l = [1, 5, -3, 6, 8, 0, -10, 121, 3, 4, 4, 5]
print(f'Min: {min(l)}, Max: {max(l)}')
edytowany 1x, ostatnio: szok
nowy_kret_2
wiem ze skrypcik i nie ma to znaczenia itp itd. ale nazwa zmiennej typowo pythonowa :D
Alley Cat
  • Rejestracja:ponad 2 lata
  • Ostatnio:prawie 2 lata
2
Kopiuj
.include dos2.inc
.include 8051.s
.include putn.s

main:   mov     dptr, #nums
        mov     r6, #0
        mov     r7, #255
loop:   movx    a, @dptr
        inc     dptr
        cjne    a, #255, gnum
        mov     r5, 6
        acall   pnum
        mov     r5, 7
        acall   pnum
        ljmp    dos_exit
gnum:   xrl     a, #128
        cjne    a, 7, $+3
        jnc     $+3
        mov     r7, a
        cjne    a, 6, $+3
        jc      $+3
        mov     r6, a
        sjmp    loop

pnum:   mov     a, r5
        jnb     acc.7, pneg
        mov     r0, #43
        lcall   dos_putch
        mov     r0, 5
        xrl     0, #128
pnumo:  acall   putn8
        mov     r0, #10
        lcall   dos_putch
        ret
pneg:   mov     r0, #45
        lcall   dos_putch
        mov     r0, 5
        xrl     0, #127
        inc     r0
        sjmp    pnumo

nums:
        db      1, 5, 0-3, 6, 8, 0, 0-10, 121, 3, 4, 4, 5
        db      255

W Internecie nikt nie wie, że jesteś kotem.
Xarviel
  • Rejestracja:ponad 3 lata
  • Ostatnio:minuta
  • Postów:847
2

SCSS

Kopiuj
@use "sass:list";

@function find-min-and-max($values) {
  $min-value: list.nth($values, 1);
  $max-value: list.nth($values, 1);
  
  @each $value in $values {
    @if $min-value > $value {
      $min-value: $value;
    }
    
    @if $max-value < $value {
      $max-value: $value;
    }
  }
  
  @return ($min-value, $max-value);
}

@debug find-min-and-max((1, 5, -3, 6, 8, 0, -10, 121, 3, 4, 5));
edytowany 1x, ostatnio: Xarviel
LukeJL
Tu piszą, że w czystym CSS są już albo będą funkcje min, max: https://web.dev/min-max-clamp/
Xarviel
@LukeJL: Tak wiedziałem o tym i nawet chciałem zrobić podobny przykład do Twojego, ale... nie można było wyświetlić wyniku w jakieś ładnej formie, żeby znaleziona liczba faktycznie pokazała się na stronie (próbowałem połączyć content: min(1px, -5px, 10px) i to nie działało, więc odpuściłem)
LukeJL
@Xarviel można się wspomóc JSem: getComputedStyle(document.querySelector('.min')).marginLeft https://jsfiddle.net/8em20Lbp/
Marcin.Miga
  • Rejestracja:prawie 17 lat
  • Ostatnio:dzień
  • Postów:2792
2
Kopiuj
select min(x), max(x) from unnest(array[1, 5, -3, 6, 8, 0, -10, 121, 3, 4, 4, 5]) x(x)

postgreSQL

W0
  • Rejestracja:ponad 12 lat
  • Ostatnio:około 4 godziny
  • Postów:3584
0
Kopiuj
a: min 1, 5, -3, 6, 8, 0, -10, 121, 3, 4, 4, 5
b: max 1, 5, -3, 6, 8, 0, -10, 121, 3, 4, 4, 5

Q

PA
  • Rejestracja:ponad 22 lata
  • Ostatnio:około 19 godzin
  • Postów:3873
0
Kopiuj
        Dim l As New List(Of Integer)({1, 5, -3, 6, 8, 0, -10, 121, 3, 4, 5})
        Console.WriteLine("Max: {0} Min: {1}", l.Max, l.Min)

VB.NET

edytowany 1x, ostatnio: Panczo
PA
G8
  • Rejestracja:ponad 3 lata
  • Ostatnio:ponad rok
  • Postów:2000
0

Dart prawie jak JS:

Kopiuj
import 'dart:math';

void main() {
final a = [1, 5, -3, 6, 8, 0, -10, 121, 3, 4, 4, 5];
print('min = ${a.reduce(min)}, max = ${a.reduce(max)}');
}

(nie ma tu kolorowania składni dart)

edytowany 1x, ostatnio: gajusz800
Spearhead
  • Rejestracja:prawie 6 lat
  • Ostatnio:około godziny
  • Postów:1002
2

05AB1E:

Kopiuj
W,Z,

try-it online

Alley Cat
  • Rejestracja:ponad 2 lata
  • Ostatnio:prawie 2 lata
4

screenshot-20230202145946.png
screenshot-20230202145951.png


W Internecie nikt nie wie, że jesteś kotem.
Alley Cat
  • Rejestracja:ponad 2 lata
  • Ostatnio:prawie 2 lata
2
Kopiuj
IDENTIFICATION DIVISION.
PROGRAM-ID. MIN-MAX.
DATA DIVISION.
    WORKING-STORAGE SECTION.
        77 NUMS PIC S9(3) OCCURS 12 TIMES INDEXED BY I.
        77 MIN PIC S9(3).
        77 MAX PIC S9(3).
PROCEDURE DIVISION.
    MOVE   1 TO NUMS(1)
    MOVE   5 TO NUMS(2)
    MOVE  -3 TO NUMS(3)
    MOVE   6 TO NUMS(4)
    MOVE   8 TO NUMS(5)
    MOVE   0 TO NUMS(6)
    MOVE -10 TO NUMS(7)
    MOVE 121 TO NUMS(8)
    MOVE   3 TO NUMS(9)
    MOVE   4 TO NUMS(10)
    MOVE   4 TO NUMS(11)
    MOVE   5 TO NUMS(12)
    
    SET MIN TO +999.
    SET MAX TO -999.
    PERFORM VARYING I FROM 1 BY 1 UNTIL I IS GREATER THAN 12
        IF MIN GREATER THAN NUMS(I) THEN SET MIN TO NUMS(I) END-IF
        IF MAX IS LESS THAN NUMS(I) THEN SET MAX TO NUMS(I) END-IF
    END-PERFORM.
    DISPLAY "MIN = "MIN.
    DISPLAY "MAX = "MAX.
STOP RUN.

W Internecie nikt nie wie, że jesteś kotem.
edytowany 1x, ostatnio: Alley Cat
Zobacz pozostałe 8 komentarzy
LukeJL
@Alley Cat: a to jednak wersja Cobola i tak czytelniejsza.
CP
@Alley Cat: dla mnie jest nieczytelny twój assembler bo nie stosujesz nazewnictwa jak w C języku, np. strtok, strlen, ale implementowane w asmie, a takie pnum, to nic nie mówi, a tak jak ktoś C umie to mu nazwa tej samej funkcji z C powie bardzo dużo. W assemblerze powinno się używać dialektu C.
Alley Cat
@CloudPro: tam tylko main, dos_putch i dos_exit mają swoje odpowiedniki w C :D
LukeJL
W assemblerze i tak piszą zwykle kompilatory, a nie człowiek.
obscurity
  • Rejestracja:około 6 lat
  • Ostatnio:14 minut
0

c#

Kopiuj
int[] arr = { 1, 5, -3, 6, 8, 0, -10, 121, 3, 4, 4, 5 };
Console.WriteLine($"Min: {arr.Min()}, Max: {arr.Max()}");

był lata temu już taki wątek, ktoś ma linka?

był kiedyś podobny wątek: https://4programmers.net/Forum/Off-Topic/63104-Konkursik_1500_downto_0


"A car won't take your job, another horse driving a car will." - Horse influencer, 1910
edytowany 2x, ostatnio: obscurity
Zobacz pozostałe 2 komentarze
CP
A jakich ludzi widzisz w wyobraźni i jakie języki tam ci się zapamiętały, jakie informacje nieogólne, bo to ogólne co napisałeś.
obscurity
to było z 10 może 15 lat temu, niewiele pamiętam. na pewno pojawił się między innymi cobol i brainfuck
CP
Byłeś wtedy na forum? w 2005 roku?
obscurity
byłem od praktycznie samego założenia; pierwsze posty pisałem z kafejki internetowej. Większość postów napisałem anonimowo; to konto powstało kiedy zablokowano taką opcję
LukeJL
  • Rejestracja:około 11 lat
  • Ostatnio:3 minuty
  • Postów:8422
1

CSS:

Kopiuj
.max {
  margin-left: max(1px, 5px, -3px, 6px, 8px, 0px, -10px, 121px, 3px, 4px, 4px, 5px);
}

.min {
  margin-left: min(1px, 5px, -3px, 6px, 8px, 0px, -10px, 121px, 3px, 4px, 4px, 5px);
}

przykład: https://jsfiddle.net/b956up1g/
(wraz z kodem HTML i dodatkową klasą container i ramką, żeby było widać te marginesy)


Alley Cat
  • Rejestracja:ponad 2 lata
  • Ostatnio:prawie 2 lata
0
Kopiuj
#!/bin/sh

max=-99999
min=99999

for i in 1 5 -3 6 8 0 -10 121 3 4 4 5; do
        test $min -gt $i && min=$i
        test $max -lt $i && max=$i
done

echo "min = $min, max = $max"

W Internecie nikt nie wie, że jesteś kotem.
LukeJL
  • Rejestracja:około 11 lat
  • Ostatnio:3 minuty
  • Postów:8422
1

JSON

Kopiuj
{
   "min": -10,
   "max": 121
}

edytowany 1x, ostatnio: LukeJL
Marooned
TIL że JSON to język ;-)
LukeJL
Język zapisu danych XD
G8
A to nie jest program nawet
LukeJL
nom, taki żart, że JSON, że język, a to w rzeczywistości tylko zapisany wynik xD
Alley Cat
  • Rejestracja:ponad 2 lata
  • Ostatnio:prawie 2 lata
0
Kopiuj
        .globl  main

main:   subq    $8, %rsp
        leaq    nums(%rip), %rsi
        lodsl
        movl    %eax, %ecx
        movl    %eax, %edx
loop:   lodsl
        cmpl    $-1U, %eax
        je      fini
        cmpl    %eax, %ecx
        cmovg   %eax, %ecx
        cmpl    %eax, %edx
        cmovl   %eax, %edx
        jmp     loop
fini:   leaq    fmt(%rip), %rdi
        movl    %ecx, %esi
        call    printf
        addq    $8, %rsp
        ret

        .section .rodata
fmt:    .asciz  "min = %i, max = %i\n"
nums:   .long   1, 5, -3, 6, 8, 0, -10, 121, 3, 4, 4, 5, -1U

W Internecie nikt nie wie, że jesteś kotem.
G8
  • Rejestracja:ponad 3 lata
  • Ostatnio:ponad rok
  • Postów:2000
0

Kto napisze w Brainfuck?

Alley Cat
  • Rejestracja:ponad 2 lata
  • Ostatnio:prawie 2 lata
0

Co prawda nie jest to BF, ale tego języka jeszcze nie było:

Kopiuj
module globals
    implicit none
    
    integer, dimension (12) :: numbers = (/1, 5, -3, 6, 8, 0, -10, 121, 3, 4, 4, 5/)
end module globals

program minmax
    use globals
    implicit none
    
    integer :: min, max
    integer :: i

    min = numbers(1)
    max = numbers(1)

    do i = 1, size(numbers)
        if (numbers(i) > max) then; max = numbers(i); end if
        if (numbers(i) < max) then; min = numbers(i); end if
    end do

    Print *, "min =", min
    Print *, "max =", max
end program minmax

W Internecie nikt nie wie, że jesteś kotem.
edytowany 1x, ostatnio: Alley Cat
LukeJL
To jakiś prawdziwy język? wygląda jak połączenie Ruby'ego, Basha i Haskella.
LukeJL
a nawet jest w nim podobieństwo do Fortrana.
Alley Cat
a nawet jest w nim podobieństwo do Fortrana bo to Fortran XD

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.