Decode-it pracuj.pl

0

Witam,

Pytanie robie konkurs na pracuj pl dla siebie i juz kilka godzin mecze dobre rozwiazanie questa 1 ktore nie chce przejsc dalej, macie pomysl w jakiej formie powinny być rozwiązania czy tylko metody czy klasy czy cuś xS

DANE WEJŚCIOWE
W pierwszej linii jedna dodatnia liczba całkowita t≤100 oznaczająca liczba testów (Tom został poproszony o przyniesienie odżywek kilka razy). Następnie t linii, każda zawierająca trzy liczby: c, k, w, gdzie 1≤c,k,w≤100.
br

t [liczba testów]
c k w [liczba metrów, udźwig Toma oraz waga nawozu]
c k w [następny test]

DANE WYJŚCIOWE
Wypisz t linii zawierających słowo “yes” jeśli Tom jest w stanie wykonać zadanie lub “no” jeśli nawóz przeciąży go i nie dałby rady go donieść.

0

Dobra bierze pod uwage zwykłego Scannera w Javie lecz nie wiem o co chodzi z JS dalej ani Php sprawdze i dam znać przykład inputa z questa numer 1 nie optymalny ale dziala xD

Scanner scanner = new Scanner(System.in);
String num = scanner.nextLine();
String[] numersStr = num.split(" ");
int[] numers = {0,0};

    for(int i = 0; i < 2; i++){
        numers[i] = Integer.parseInt(numersStr[i]);
    }

    System.out.println(Soroban(numers[0], numers[1]));

    scanner.close();
0
import java.util.Scanner;

class Quest0{

    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);
        int t = scanner.nextInt();

        String num = scanner.nextLine();
        String[] numersStr = {"0","0","0"};
        for(int i = 0; i < t; i++){

            num = scanner.nextLine();
            numersStr = num.split(" ");
            int[] numers = {0,0,0};
            
            for(int j = 0; j < numersStr.length; j++){
                numers[j] = Integer.parseInt(numersStr[j]);
            }
    
            System.out.println(Test(numers[0], numers[1], numers[2]));
        }    
            scanner.close();
    }
    
        private static String Test(int c, int k, int w){
            if(c * w <= k){
                return "yes";
            } else {
                return "no";
            }
        }
}
0

O, panie, to jest dopiero zadanie na rozgrzewkę.

0

Jak ktoś rozpracuje jak w PHP to ugryźć to będzie świetnie. Dodam, że readline() do odczytania i echo/ print do wypisania nie dają rady i przyznane jest 0 punktów. W konsoli śmiga aż miło, a na stronie konkursu lipa.

1

@Maurycy Biegański:
Udało mi się zrobić to w php :D

<?php

header('Content-Type: text/plain');

$t = (int) fgets(STDIN);
$l = $t;
while($t--) {
    list($c, $k, $w) = explode(' ', fgets(STDIN));
    $in[] = $c.' '.$k.' '.$w;
}

for ($i=0;$i<$l;$i++){
  $ckw[$i] = explode(" ", $in[$i]);
    if ($ckw[$i][0]*$ckw[$i][2] <= $ckw[$i][1])
      print_r("yes\r\n");
    else
      print_r("no\r\n");
}

może trochę w taki meh sposób ale zadanie dobrze zrobione :D

0

Super, wielkie dzięki! Zależało mi głównie, żeby rozwiązać problem z niezczytywaniem wartości od nich i dzięki Twojemu rozwiązaniu się udało :D

0

Ja nadal nie rozumiem jak sczytać dane wejściowe w js :/
Czy to znajduje się w jakieś zmiennej, tablicy, czy może trzeba te dane pobrać z <body>???
Jak je później wypisać? Z pomocą konsoli?
Ktoś ma jakieś sugestie?

0

Dla JavaScript trzeba użyć SpiderMonkey.
https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey/Introduction_to_the_JavaScript_shell

Udało mi się to odpalić przez jsshell:

Moje rozwiązanie, które przeszło:

/* global readline */

var numberOfTests = readline()

for (var i = 1; i <= numberOfTests; i++) {
  var ckw = readline()
  var [c, k, w] = ckw.split(' ')
  var answer = test(c, k, w) ? 'yes' : 'no'

  console.log(answer)
}

function test (c, k ,w) {
  return c * w <= k
}

Ważne jest to, że readline pyta o pojedynczą linię, a wiec trzeba dane z przykładu wpisywać ręcznie - nie ładować np. z pliku całości danych.

Poniżej widok z terminala

dEZ7J1.png

0

Mnie bardziej zastanawia, dlaczego:
a) kod napisany w PHP otrzymuje 66,67 pkt w Q2
b) kod napisany w C++ otrzymuje 33,33 pkt w Q2

Porównałem wyniki dla przypadków testowych, range 1000 - 9999, rezultat ten sam.

Przez chwilę, zastanawiałem się, że może temat z czasem wykonania, ale nie ważne jak bardzo uproszczę logikę, to mam takie same wyniki

0
Romuald Kowalczyk napisał(a):

Dla JavaScript trzeba użyć SpiderMonkey.
https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey/Introduction_to_the_JavaScript_shell

Udało mi się to odpalić przez jsshell:

Moje rozwiązanie, które przeszło:

/* global readline */

var numberOfTests = readline()

for (var i = 1; i <= numberOfTests; i++) {
  var ckw = readline()
  var [c, k, w] = ckw.split(' ')
  var answer = test(c, k, w) ? 'yes' : 'no'

  console.log(answer)
}

function test (c, k ,w) {
  return c * w <= k
}

Ważne jest to, że readline pyta o pojedynczą linię, a wiec trzeba dane z przykładu wpisywać ręcznie - nie ładować np. z pliku całości danych.

Poniżej widok z terminala

dEZ7J1.png

Widzę, że jeszcze dużo nauki przede mną.
Dziękuję za pomoc :)
Pozdrawiam

0

Macie pomysł jak input może wyglądać ze strony Pythona?
Nie ma czegoś takiego jak readline() jak w JSie.

0

W js jest prompt.
A w Pythonie tylko nazwa zmiennej i input()

0

Cześć,
Moje rozwiązanie dla C++ (100 punktów, czas wykonania 0):

include <iostream>
#define _CRT_SECURE_NO_WARNINGS
using namespace std;
int main()
{
int v_testes=0;
int v_c=0, v_k=0, v_w=0;//powierzchnia,udzwig,waga paczki
scanf("%d",&v_testes);
for (int i = 1; i <= v_testes; i++) {
scanf("%d %d %d", &v_c,&v_k,&v_w);
if (v_w* v_c <= v_k)
printf("yes\n");
else
printf("no\n");
}
// return 0;
}

1

screenshot-20200813172519.png

Jak traktować poważnie konkurs gdzie nawet przykładowe wejścia / wyjścia są źle podane? I żadna poprawna odpowiedź nie przechodzi (fajnie jakby zwróciło informacje co jest błędne, jakieś test casy). Chciałem wziąć w tym udział no ale się nie da.

0

A ja mam problem z ostatnim zadaniem, chyba nie umiem odczytać danych wejściowych... Tam jest standardowe wejście/wyjście? (dla Pythona input() oraz print() ? )

0
for a in[*open(0)][1:]:c,k,w=map(int,a.split());print('yneos'[c*w>k::2])
0

Jednak błąd jest gdzieś po mojej stronie, próbowałem na SPOJu, próbowałem w Javie i Pythonie. Jeżeli tylko próbuję czytać dane wejściowe to skutkuje to run-time error i poborem dużej ilości pamięci. Teraz testowałem taki kod w javie i też wywala błąd...

import java.util.Scanner;

public class Main {

    public static void getData(Scanner input) {
        String[] mapSize = input.nextLine().split(" ");
        int h = Integer.parseInt(mapSize[0]);
        int w = Integer.parseInt(mapSize[1]);
        int c = Integer.parseInt(mapSize[2]);
        for (int j = 0; j < h; j++) {
            String row = input.nextLine();
        }
    }

    public static void answer() {
        System.out.println("Y");
        System.out.println("-1, -1");
    }

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);

        int tests = Integer.parseInt(input.nextLine());

        for (int i = 0; i < tests; i++) {
            getData(input);
            answer();
        }
        
        input.close();
    }
}
0

Dałeś niepotrzebnie przecinek między minus jedynkami

0

Hej, a jak wygląda sprawa z wpisaniem kilku linii / wczytaniem pliku? Chodzi mi konkretnie o zadanie 4, gdzie trzeba wczytać listę IP. Tutaj readline() chyba nie da rady, a szczerze mówiąc nie do końca rozumiem. Działam w JS i chciałem nauczyć się nowych rzeczy.

Czy te dane wejściowe mają być jakoś w osobnym pliku umieszczone i ładowane?

0
lalto napisał(a):

Hej, a jak wygląda sprawa z wpisaniem kilku linii / wczytaniem pliku? Chodzi mi konkretnie o zadanie 4, gdzie trzeba wczytać listę IP. Tutaj readline() chyba nie da rady, a szczerze mówiąc nie do końca rozumiem. Działam w JS i chciałem nauczyć się nowych rzeczy.

Czy te dane wejściowe mają być jakoś w osobnym pliku umieszczone i ładowane?

We wszystkich zadaniach dane są czytane ta samo, ze standardowego wejścia. Nie wiem, jak to wygląda w JS, ale jeśli zrobiłeś zadania 1-3, i jakoś tam wczytywałeś dane, to tutaj zrób podobnie.

0
olafmat napisał(a):
lalto napisał(a):

Hej, a jak wygląda sprawa z wpisaniem kilku linii / wczytaniem pliku? Chodzi mi konkretnie o zadanie 4, gdzie trzeba wczytać listę IP. Tutaj readline() chyba nie da rady, a szczerze mówiąc nie do końca rozumiem. Działam w JS i chciałem nauczyć się nowych rzeczy.

Czy te dane wejściowe mają być jakoś w osobnym pliku umieszczone i ładowane?

We wszystkich zadaniach dane są czytane ta samo, ze standardowego wejścia. Nie wiem, jak to wygląda w JS, ale jeśli zrobiłeś zadania 1-3, i jakoś tam wczytywałeś dane, to tutaj zrób podobnie.

No tak, z tym że readline() pobiera jedną linię (a dodatkowo w zadaniu jest napisane, że dane kończą się wraz z końcem pliku - co też nie jest dla mnie jasne), więc zastanawiam się, czy po prostu kombinować z tą metodą, czy może spróbować ugryźć to inaczej. W każdym razie dziękuję za odpowiedź, postaram się coś wykombinować.

0

Zgadzam się Lalto. Też miałem z tym problem, w zadaniu piszą X, robią Y. Porzuciłem ten konkurs więc nie pomogę z tym. Tylu nieścisłości dawno nie widziałem nawet w żadnym zadaniu w pracy :D

0
anonimowy napisał(a):

Zgadzam się Lalto. Też miałem z tym problem, w zadaniu piszą X, robią Y. Porzuciłem ten konkurs więc nie pomogę z tym. Tylu nieścisłości dawno nie widziałem nawet w żadnym zadaniu w pracy :D

Co lepsze, poszedłem w kierunku ładowania danych z plików ("dane wejściowe kończą się wraz z końcem pliku) i za pomocą metody read() jestem w stanie wczytać dane. Ale w sumie nie wiem, jaką ścieżkę do pliku wybrać...

Działam w JS, ale raczej React niż SpiderMonkey (który jest w konkursie) i stąd czuję się nieco zagubiony.

0

Tak w 4 zadaniu trzeba inaczej podejść do odczytu danych, ja to zrobiłem tak w Pythonie:

import fileinput

for line in fileinput.input():

A tak z ciekawości ile punktów udało Wam się zdobyć za poszczególne zadania? Wydaje mi się, że 1-3 jest punktowane max 100, 4-6 tu już miałem wyższe wyniki ale max okolice 200, ostatnie musi być mocno punktowane patrząc na ranking.

0

Narobiłem się w tym C++, na razie zrobiłem podstawowy wariant, czyli program działa na zasadzie losowego wybierania grupy, przeliczania mapy, znowu losowo wybiera i tak aż braknie grup. Potestowałem go trochę we własnym zakresie i wygląda na to, że działa poprawnie. Niestety w konkursie wyrzuca mi błędne rozwiązanie :( Już brakuje mi pomysłów, co może być nie tak. Nie chcę tu wklejać całego kodu, ale może macie jakiś pomysł na co zwrócić uwagę? Jeżeli wyrzucam odpowiedzi typu Y -1 -1 albo N to przyjmuje rozwiązanie i daje 0 punktów.

0

To zadanie 4 to jakaś masakra.
Jak można spieprzyć opisanie wczytywania danych?

"Wejście składa się z wierszy...
Dane wejściowe kończą się z końcem pliku?"

Mam to wczytywać za pomocą while i wczytywać dopóki ktoś nie wprowadzi na wejście znaku EOF?
Czy mam zapisać te instrukcje do jakiegoś pliku i je z niego odczytywać?

Próbowałem 4 różnych opcji w Pythonie, za każdym razem wywalało przy wysyłaniu rozwiązania runtime error.

0
Marcin Czekajski napisał(a):

A tak z ciekawości ile punktów udało Wam się zdobyć za poszczególne zadania? Wydaje mi się, że 1-3 jest punktowane max 100, 4-6 tu już miałem wyższe wyniki ale max okolice 200, ostatnie musi być mocno punktowane patrząc na ranking.

W FAQ jest podana punktacja.
Mi wyszło tak:

  1. 100, 2) 100, 3) 100, 4) 300, 5) 418.14, 6) 659.7 7) 2380.68
Marcin Czekajski napisał(a):

Tak w 4 zadaniu trzeba inaczej podejść do odczytu danych, ja to zrobiłem tak w Pythonie:

import fileinput

for line in fileinput.input():

Co do 4, wczytywanie u mnie wyglądało tak:

for line in sys.stdin:
    line = line.strip()
    op, ip1, ip2 = line.split()
    if op == 'B':
        network.connect(ip1, ip2)
    if op == "T":
        print("T" if network.is_connected(ip1, ip2) else "N")

Potem straciłem zainteresowanie poprawianiem rozwiązań.

2

Cześć, czy macie jakiś pomysł jak w zadaniu 4 wprowadzić poprawnie dane w Javie? Na różne sposoby już próbowałem i brakuje pomysłu. Beznadziejny opis w zadaniu jeśli chodzi o to jak powinno coś takiego wyglądać :(

0
Infinito napisał(a):

Cześć, czy macie jakiś pomysł jak w zadaniu 4 wprowadzić poprawnie dane w Javie? Na różne sposoby już próbowałem i brakuje pomysłu. Beznadziejny opis w zadaniu jeśli chodzi o to jak powinno coś takiego wyglądać :(

Mam ten sam problem odnośnie zadania 4. tyle że w JS (SMonkey) i tak jak we wcześniejszych zadaniach readline() zdawało egzamin, to teraz nie bardzo wiem, o co chodzi. Czy ktoś dał radę zrobić to w JS?

1 użytkowników online, w tym zalogowanych: 0, gości: 1